我想创建两个表:数据库中的支持者和票证。在票证表中,我想添加支持者表的id作为外键(在票证表中的supports_id)。但我不会在迁移中定义为外键。我在Laravel官方网站上阅读了雄辩的关系,它说“Eloquent会自动确定正确的外键列,并用_id' 。那么,我是对还是错?
答案 0 :(得分:0)
我总是这样做
Schema::create('tickets', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->integer('supporters_id')->unsigned()->index();
$table->foreign('supporters_id')->references('id')->on('supporters')->onDelete('cascade');
$table->string('ticket_owner');
...
$table->timestamps();
});
因此我明确定义$ table-> foreign这一事实让我觉得它是必需的。如果您发现其他证据不需要,请告诉我: - )
答案 1 :(得分:0)
如果未在迁移中定义外键,则数据库在数据库级别上没有任何外键关系。 (并且没有参考完整性等......)。
如果您使用Eloquent查询数据库,则可以使用以下用户模型:
命名空间App;
使用Illuminate \ Database \ Eloquent \ Model;
class User extends Model
{
/**
* Get the phone record associated with the user.
*/
public function phone()
{
return $this->hasOne('App\Phone');
}
}
在存在一对一关系用户的情况下< - >电话。
这里假设电话表有一个名称的列 user_id (modelname +“_”+“id”)用于制作联接。
您可以完全自由地使用自己的命名键约定并使用以下函数:
public function phone()
{
return $this->hasOne('App\Phone','own_key_name');
}
但同样:只使用Eloquent并不意味着您的数据库表具有任何外键约束。必须在数据库迁移中添加它们。