我对学说的问题是
之后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的文档。