我刚开始为我的学校作业做一个拉威尔项目。我刚刚开始了大约一个星期,所以我对拉威尔的基本知识还不完整。
今天,我在laravel中遇到了一个模型多对多关系的问题。我用迁移a和b创建了两个模型。应用程序内\a.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class A extends Model
{
//
public function B(){
return $this->belongsToMany('App\B');
}
}
以及app\b.php中的
namespace App;
use Illuminate\Database\Eloquent\Model;
class B extends Model
{
//
public function A(){
return $this->belongsToMany('App\A');
}
}
我认为它应该起作用。但是,当我使用seeder创建虚拟数据时,得到的错误是表a\u b没有创建。我假设我必须为两个pivot列创建空表a\u b,这很烦人。有没有更好的方法,一种正确的方法来创建多对多关系,而不必手动为它们创建透视表?
1条答案
按热度按时间uxhixvfz1#
恐怕不行。有一些快捷方式可以做到这一点,就像它们在这里显示的方式一样,但最终您将要做一些手工工作来创建表。不管怎样,您最终还是会使用迁移,但是根据您对pivot所需的控制量,您可能需要为此使用一个模型。对数据透视表使用模型不是强制性的。
https://laravel.com/docs/5.5/migrations#creating-表
这可能是迁移的最终结果:
但是如果您真的想这样做,也可以使用新模型创建一个自定义表(使用像abrandomname这样的自定义名称)。只需在文档中查找defining custom intermediate table models标题:
https://laravel.com/docs/5.5/eloquent-relationships#many-对很多人来说