Laravel 5 在Laravel 5中规划雄辩的人际关系

Laravel 5 在Laravel 5中规划雄辩的人际关系,laravel-5,eloquent,Laravel 5,Eloquent,我有一个项目模型。每个项目可以有一个缩略图、主图像和其他多个资源/图像(例如项目详细信息)以及多个文本内容(将放置在这些图像之间)。每个项目页面都会拉入这些资源(缩略图除外)和文本,并按特定顺序显示它们(我在控制面板上通过拖放来定义) 因此基本上类似于Behance使用的结构。我正试图用雄辩的语言来构建这个框架,下面是我想做的: 我可以让资产和文本模型在项目模型上具有hasMany()关系。这两个模型将有一个名为pageSort的列,然后控制器将这两个集合合并在一起,并使用该pageSort列对

我有一个
项目
模型。每个
项目
可以有一个缩略图、主图像和其他多个资源/图像(例如项目详细信息)以及多个文本内容(将放置在这些图像之间)。每个
项目
页面都会拉入这些资源(缩略图除外)和文本,并按特定顺序显示它们(我在控制面板上通过拖放来定义)

因此基本上类似于
Behance
使用的结构。我正试图用雄辩的语言来构建这个框架,下面是我想做的:

我可以让
资产
文本
模型在
项目
模型上具有
hasMany()
关系。这两个模型将有一个名为
pageSort
的列,然后控制器将这两个集合合并在一起,并使用该
pageSort
列对它们进行排序

还有其他建议吗


编辑:

我尝试在拉威尔中使用多态关系,但还没有成功

我的
项目
型号:

public function nodes()
{
    return $this->morphedByMany(Node::class, 'nodeable');
}
public function nodeable()
{
    return $this->morphTo();
}
我的
节点
型号:

public function nodes()
{
    return $this->morphedByMany(Node::class, 'nodeable');
}
public function nodeable()
{
    return $this->morphTo();
}
然后在我的代码中执行以下操作:

$project = new App\Project;
$project->title = 'Some title';
$project->save();

$image = new App\Image;
$image->source = 'somefile.jpg';
$project->nodes()->save($image)

但我得到了以下错误:

Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'project_id' in 'field list' (SQL: insert into `nodeables` (`nodeable_id`, `nodeable_type`, `project_id`) values (5, App\Node, 1))'
所以我猜它是在一个pivot表中创建一个条目
nodeables
。然后我创建了这个表,它在pivot表中保存了一个条目,但没有保存在
节点
表中


这简直快把我逼疯了(

我会有一个多态的
节点
模型,并且有你的
排序顺序
列。
项目
会有许多
节点
模型,
节点
可以变形为你需要的任何类型:
文本
图像
视频
,等等

class Project extends Model
{
    public function nodes()
    {
        return $this->hasMany(Node::class)->orderBy('sort_order');
    }
}

class Node extends Model
{
    public function nodeable()
    {
        return $this->morphTo('nodeable');
    }

    public function project()
    {
        return $this->belongsTo(Project::class);
    }
}

// Example
class Text extends Model
{
    public function node()
    {
        return $this->morphOne(Node::class);
    }
}

因此,
Node
会有
textable
imageable
列吗?不会。
Node
可能有类似
nodable\u id
nodable\u type
列的内容。类型可能类似于
Image
Text
。完美。谢谢!我现在就试试。更新了我的问题。你介意吗快速查看一下,plaese?你的
项目
节点
模型之间的关系不会是一个被许多变形的
,一个
项目
只会有许多
节点
模型,而你的
节点
将是“可节点的”(就像现在一样),并具有指向项目的外键和排序顺序列。