2

我需要在 laravel 4中创建多态 多对多关系,我不完全确定这是否可能。

例如

TagModel
 - id
 - title
 - slug

PostModel
 - id
 - title
 - slug
 - content

 PageModel
  - id
  - title
  - slug
  - content

这当然会有 tags_tagable 数据透视表

 tags_tagable
  - tag_id
  - tagable_id
  - tagable_type
4

2 回答 2

3

多态多对多关系将于 11 月在 Laravel 4.1 中发布。

如果需要,您可以尝试切换到 4.1 分支并立即使用它们。但在这个阶段,我还没有看到任何关于它们使用的具体文档——只有 Taylor 的推文。

在此处查看推文

于 2013-09-02T13:48:38.977 回答
0

Laravel 4.1 现在支持多态多对多关系。

下面的示例显示了我如何实现与产品和帖子共享照片。

数据库架构

相片

id              integer
filename        string
alt             string

可拍照的

id              integer
photoable_id    integer
photoable_type  string

楷模

照片模型

class Photo extends Eloquent
{
public function products(){
    return $this->morphedByMany('Product', 'photoable');
}

public function posts(){
    return $this->morphedByMany('Post', 'photoable');
}
}

产品型号

class Product extends Eloquent
{
public function photos(){
    return $this->morphToMany('Photo', 'photoable');
}
}

后模型

class Post extends Eloquent
{
public function photos(){
    return $this->morphToMany('Photo', 'photoable');
}
}

通过以上内容,我可以访问附加到产品的所有照片,如下所示:

$product = Product::find($id);
$productPhotos = $product->photos()->all();

我还可以迭代以将所有照片显示为任何模型集合。

foreach ($productPhotos as $photo)
{
    // Do stuff with $photo
}

只需更改一些型号名称,上述内容几乎可以完全按照您的要求进行复制。

于 2014-01-29T23:35:03.210 回答