如何仅在Laravel(5.4)中的pivot(中间)表中创建一列,然后对其结果进行过滤?
我有两个模特,电影和剧组。CastAndCrew是为一部电影工作的各种导演、制片人和演员。透视表应定义CastAndCrew成员与电影之间的关系类型。很明显,有人可能在一部电影中扮演演员,在另一部电影中扮演制片人,所以我不能在CastAndCrew表中的条目中定义这一点,因为这只适用于一部电影,对于他们拍摄的其他电影可能不同。所以我假设我必须在透视表中定义关系,但我不确定如何准确地做到这一点。到目前为止,我得到的是:
class Film extends Model
{
protected $fillable = array('filmtitle', 'description');
public function List_Directors()
{
return $this->belongsToMany('App\CastAndCrew')->withPivot('type')->wherePivot('type', 'director');
}
public function List_Actors()
{
return $this->belongsToMany('App\CastAndCrew')->withPivot('type')->wherePivot('type', 'actor');
}
}
和
class CastAndCrew extends Model
{
protected $fillable = array('firstname', 'lastname');
public function List_Films_With_Director()
{
return $this->belongsToMany('App\Film')->withPivot('type')->wherePivot('type', 'director');
}
public function List_Films_With_Actor()
{
return $this->belongsToMany('App\Film')->withPivot('type')->wherePivot('type', 'actor');
}
}
当新的CastAndCrew成员添加到站点时,我打算使用attach方法,例如添加新的导演:
$newcastcrew->CastAndCrew::create(['firstname' => Request::get('firstname'), 'lastname' => Request::get('lastname')]);
$newcastcrew->List_Films_With_Director()->attach($filmID, ['type' => 'director']);
1)是这样吗?
2.-
2.)大概是<代码>-
非常感谢!
谢啦
你的想法和逻辑都很好。您可能希望添加一个不带类型条件的关系来获取用户的所有影片以及影片的所有演员和剧组。您还需要更好地命名您的方法和关系。我已经为你清理了代码。如果您愿意,请随意使用。
class Film extends Model
{
protected $fillable = array('filmtitle', 'description');
public function castAndCrew()
{
return $this->belongsToMany('App\CastAndCrew')->withPivot('type');
}
public function directors()
{
return $this->castAndCrew()->wherePivot('type', 'director');
}
public function actors()
{
return $this->castAndCrew()->wherePivot('type', 'actor');
}
}
class CastAndCrew extends Model
{
protected $fillable = array('firstname', 'lastname');
public function films()
{
return $this->belongsToMany('App\Film')->withPivot('type');
}
public function filmsAsDirector()
{
return $this->films()->wherePivot('type', 'director');
}
public function filmsAsActor()
{
return $this->films()->wherePivot('type', 'actor');
}
}
我下面是一个教程,名为在laracast中的增量API由Jeffrey Way。 Laravel 4 faker类种子和Laravel 5.4之间的编码不同。 我仍然遵循教程“Seeders Reloated”中相同的代码行。现在,我只能说“LessonTagTableSeeder类不存在” 标签进料器 LessonTag表播种机 数据库搜索 我能够使用php artisan db:seed--c
事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取
我有一个问题,正在寻找一个很好的解决方案。 我有这些db表: 游戏对象 游戏对象属性 游戏\对象\游戏\对象\属性(轴) 游戏对象。php: GameObjectAttribute.php: 现在,我试图获得所有GameObjectType的GameObject,并用透视列值过滤结果。 我在这里使用了一个连接,但是有没有办法用雄辩的关系来做呢? 这将返回给我所有“军队”类型的游戏对象: “game
我想创建用户角色系统,为此我创建了三个表:用户、角色 它有一个belongToMany关系,透视表存储了用户id
问题内容: 说我的内容如下: 即有多个,每个都有一个和的范围。每个数据库都应有一个从其父数据库中选择的基础,而不是另一个。 创建用于添加的表单时,我想删除选择(因为已经通过页面上的“添加客户端”按钮Rate选择了该选项),并且也将选择限制于此。 我该如何在Django 1.0中做到这一点? 目前,我当前的文件只是样板文件: 而且也是基本的: 在Django 0.96中,我能够通过在渲染模板之前进行
问题内容: 我在下面的表A中,对于每个唯一的ID,都有三个带有某些值的代码。 我有第二个表B,其格式如下: 每个唯一ID仅一行。我想为第一个表中的每个ID填充第一个表A中的第二个表B。 对于上面的第一个表A,第二个表B应该显示为: 如何在单个SQL查询中实现此目标? 问题答案: 如果您的版本没有,您也可以使用以下命令: (在我的V6R1 DB2实例上工作,并有一个SQL Fiddle示例)。