我如何使用Eloquent&Laravel 5查询多态数据透视表

马克斯·桑斯特(Max Sangster)

我有3张桌子。1个定义视频,1个定义转盘,1个数据透视表定义一个视频所属的转盘(即使它属于任何转盘)。

我试图以尽可能简单的方式在下面描述我的表格

  • 影片表

ID标题用户

  • 功能表(数据透视)

id carousel_id video_id

  • 轮播表

id carousel_type

如何使用雄辩模型关系在数据库中查询功能表中具有给定轮播类型的所有视频。我正在使用Laravel 5,如果有帮助的话。我已经按照他们的文档中所述尝试了morphMany,但是我必须做错了什么。

谢谢!

编辑:

表名:

影片,功能,轮播

型号名称:

视频,功能,轮播

编辑2:表格:演员表,功能,功能模型:投放,功能

这是我目前遇到的文件。

控制器:

class castController extends Controller {
    public function index()
    {
        $carousel_casts = \App\Feature::find(1)->casts;
        foreach($carousel_casts as $casts){
            echo $casts->title . "<br>";
        }
    }
}

模型:

public function casts()
{
        return $this->belongsToMany('\App\Cast','featureables'); 
}

我有特定的表名是有原因的,我要接管一个现有的项目,并且表名不能更改。当前表是演员表(视频),要素(轮播表),要素(枢轴表)。

我可以分别查询所有这些表而没有问题,但是当我使用belongsToMany关系时,出现以下错误。

SQLSTATE [42S22]:未发现柱:1054未知列'featureables.feature_id'在'字段列表'(SQL:选择casts。*, featureablesfeature_idpivot_feature_idfeatureablescast_id作为pivot_cast_idcasts内连接featureablescastsid= featureablescast_id其中featureablesfeature_id= 1)

灵巧的

首先,将features重命名carousel_video

接下来,在Carousel模型中定义关系,如下所示:

public function videos()
{
    return $this->belongsToMany('YourAppNamespace\Video');
}

然后,查询Carousel模型,如下所示:

$videos = Carousel::find(2)->videos; //finds all videos associated with carousel having id of 2

return $videos;

您可以通过在Video模型上定义一个关系来做到相反

public function carousels()
{
    return $this->belongsToMany('YourAppNamespace\Carousel');
}

并且,查询如下:

$carousels = Video::find(2)->carousels; //finds all carousels associated with video having id of 2

return $carousels;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章