我想创建两个表:支持者和数据库中的票。在“票证表”中,我希望将“支持者”表的id添加为“外键”(票证表中的supports_id )。但我不会把它定义为迁移的外键。我在拉拉维尔官方网站上读到了雄辩的关系,它说:“雄辩将自动确定正确的外键列,并以_id作为后缀。”所以,我是对还是错?
发布于 2016-07-07 06:20:51
如果在迁移中没有定义外键,那么数据库在数据库级别上就没有任何外键关系。(没有提及的完整性等等.)。
如果您使用雄辩功能查询您的数据库,您可以拥有这样的用户模型:
名称空间应用;
使用照明\数据库\雄辩\模型;
class User extends Model
{
/**
* Get the phone record associated with the user.
*/
public function phone()
{
return $this->hasOne('App\Phone');
}
}在这种情况下,有一对一的关系用户<->电话。
这里假定,phones表有一个名为user_id (modelname + "_“+ "id") 的列,用于创建Joins.。
您完全可以自由地使用您自己命名键的约定,并按以下方式使用该函数:
public function phone()
{
return $this->hasOne('App\Phone','own_key_name');
}但是,再说一遍:仅仅使用雄辩并不意味着数据库表有任何外键约束。它们必须添加到数据库迁移中。
发布于 2016-07-06 20:25:58
我总是这样做
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这一事实使我认为它是必要的。如果你发现其他证据不需要,请告诉我:-)
https://stackoverflow.com/questions/38230814
复制相似问题