我有一个案例,我有以下模型:
演示文稿,幻灯片,视频(尚未实施)
这些都是通过多态的多对多关系加入的,一切看起来都很好。但是我发现需要查询所有"表现形式" (特定演示文稿的幻灯片和视频),因为我想将它们全部显示在列表中的一个位置。
我如何定义这种关系,或者我注定要在我的模型中创建一个函数来处理所有这些?
以下是模型和数据库架构:
演示模型
class Presentation extends \Eloquent {
protected $fillable = [
'name'
];
public function slideshows()
{
return $this->morphedByMany('Slideshow', 'presentable'); //, 'presentables', 'presentable_id', 'presentable_type');
}
public function presentables()
{
//code in here to return all presentable objects
}
}
幻灯片模型
<?php
class Slideshow extends \Eloquent {
protected $fillable = [];
public function presentation()
{
return $this->morphToMany('Presentation', 'presentable', 'presentables', 'presentable_id', 'presentable_type');
}
}
表格
Schema::create('presentables', function(Blueprint $table)
{
$table->increments('id');
$table->integer('presentation_id');
$table->integer('order');
$table->integer('presentable_id')->unsigned()->index();
$table->string('presentable_type')->index();
$table->timestamps();
});