学说:未产生外键



我对学说的问题是

之后
php bin/console doctrine:schema:update --force

它会创建数据库,但不是外国钥匙。我正在使用注释,并尝试在许多to anthe等...等注释中使用@orm joincolumn,但没有成功。

我希望你们能帮助我。

这是我实体之一的代码:

<?PHP
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * @ORMEntity
 * @ORMTable(name="member")
 */
class Member{
/**
 * @ORMColumn(type="string",length=25)
 * @ORMId
 */
private $code;
/**
 * @ORMColumn(type="string",length=25)
 */
private $first_name;
/**
 * @ORMColumn(type="string",length=25)
 */
private $last_name;
/**
 * @ORMColumn(type="integer")
 */
private $national_id;
/**
 * @ORMColumn(type="string",length=25)
 */
private $civil_situation;
/**
 * @ORMColumn(type="string",length=1)
 */
private $gender;
/**
 * @ORMColumn(type="date")
 */
private $dob;
/**
 * @ORMColumn(type="integer")
 */
private $tel_mobile;
/**
 * @ORMColumn(type="integer")
 */
private $tel_home;
/**
 * @ORMColumn(type="integer")
 */
private $tel_ref;
/**
 * @ORMColumn(type="string",length=25)
 */
private $email;
/**
 * @ORMColumn(type="date")
 */
private $entry_date;
/**
 * @ORMColumn(type="string",length=64)
 */
private $password;
/**
 * @ORMColumn(type="integer",nullable=true)
 * @ORMOneToOne(targetEntity="Staff")
 */
private $staff;
/**
 * @ORMColumn(type="integer",nullable=true)
 * @ORMOneToOne(targetEntity="Student")
 */
private $student;
/**
 * @ORMColumn(type="integer")
 * @ORMManyToOne(targetEntity="Address")
 */
private $address;
/**
 * @ORMColumn(type="integer")
 * @ORMManyToOne(targetEntity="Faculty")
 */
private $faculty;
/**
 * @ORMColumn(type="integer")
 */
private $disable;
/**
 * @ORMColumn(type="string",length=25,nullable=true)
 */
private $disable_reason;
/**
 * @ORMColumn(type="integer",nullable=true)
 */
private $disable_year;
public function __construct()
{
    //nothing
}
// getters and setters
?>

当在同一列上指定@ORMColumn@ORMJoinColumn一起指定时,joincolumn的关联将被忽略,并且在表格上不会创建外键。因此,不要在同一列中同时使用@ORMColumn@ORMJoinColumn

确实喜欢下面:

/**
*  @var Address
*
* @ORMManyToOne(targetEntity="Address")
* @ORMJoinColumn(name="address_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $address;

它使列在数据库表上的命名 address_id,带有外键索引并删除地址记录,依赖表中的关联记录也已删除(cascade操作(。您可能会在OnDelete上使用其他操作,请参见Doctrine的文档。

相关内容

  • 没有找到相关文章

最新更新