我试图理解laravels雄辩的映射功能。 如果我有3张桌子:
Article
Asset
ArticleAssetMap
文章:简单的表格,ID,标题,正文,日期等。
资产:资产路径,日期等
ArticleAssetMap:两个列。 article_id,asset_id
我需要了解如何向我的模型描述当我请求所有或部分文章时,检查地图表以及如果找到了地图,那么也获得资产......
我已经为上面的所有表格提供了模型,并且认为它与雄辩的onetomany / belongssto等有关...但是找不到合适的教程可以帮助我解决这个问题。 ..我是愚蠢的..有一种很好的方式可以得到它吗?
答案 0 :(得分:1)
将您的第三个表命名为article_asset
,然后执行以下操作。
在您的Article
班级
// if one article has many assets
public function assets()
{
return $this->hasMany(Asset::class);
}
// if one article has only one assets
public function asset()
{
return $this->hasOne(Asset::class);
}
在您的Asset
班级
如果资产属于一篇文章
public function article()
{
return $this->belongsTo(Article::class);
}
如果资产属于许多文章
public function articles()
{
return $this->belongsToMany(Article::class);
}
你现在好了。
答案 1 :(得分:0)
您也可以通过将其他参数传递给hasMany方法来覆盖外键和本地键:
return $this->hasMany('App\Comment', 'foreign_key');
return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
https://laravel.com/docs/5.3/eloquent-relationships#one-to-many