早上好,我在Eloquent的模型关系上遇到了一些麻烦,我需要链接那些具有中间表的文章和图像。在中间表中,我想添加文章和图片的ID,并且我想检索属于文章的所有图片,管理关系的最佳方式是什么?在此先感谢laravel雄辩中的一对多关系
回答
您可以使用morphMany()
关系(Polymorphic Relationship),以解决您的问题是这样的:
UPDATE:表结构如下所示:
- articles
- id
- title
- content
- ...
- images
- id
- owner_id
- owner_type (Here there can be - Article, Auction, User, etc)
- name
- mime_type
- ...
多态性关系允许模型属于多于一个 其他模型上的单个关联。例如,想象一下 您的应用程序的用户可以对帖子和视频进行“评论”。使用 多态关系,可以为这两种情况都使用单个注释表 。
你的车型将是这样的:
class Article extends Model
{
public function images()
{
return $this->morphMany(Image::class, 'owner');
}
}
class Image extends Model
{
public function owner()
{
return $this->morphTo();
}
}
多个图像保存到一个文章,你可以这样做:
$article->images()->create([... inputs_arr ...]);
,并获取它们,你可以做到这一点像:
$articleImages = Article::find($id)->images;
希望这有助于!
那么,它如何保存表格上的数据?它在哪里使数据库的关系?我在创建模型之前创建了数据库,因为我以前正在使用纯PHP。感谢:D –
这个案件将会有两张表格。你的表格结构就像我上面更新的答案中所示。 –
如果我使用与其他模型相关的图像表,比如说拍卖,用户等,不会有问题吗? –
您不需要使用数据透视表,因为它是one-to-many的关系。
只需使用hasMany()
关系:
public function images()
{
return $this->hasMany('App\Image');
}
然后用eager loading加载所有图片与文章:
$article = Article::with('images')->where('id', $articleId)->first();
- 1. Laravel雄辩一对多关系
- 2. laravel-雄辩关系
- 3. 雄辩许多一对多的关系
- 4. Laravel雄辩的关系 - hasOne?
- 5. Laravel 4雄辩的关系
- 6. Laravel 5.1 - 雄辩的关系
- 7. 雄辩的关系(Laravel 5.4)
- 8. Laravel,雄辩:从多到许多关系
- 9. Laravel雄辩一对多
- 10. Laravel和雄辩返回从一个多对多的关系
- 11. Laravel雄辩的关系多个模型
- 12. laravel雄辩排序关系
- 13. Laravel 5.5雄辩WhenLoaded关系
- 14. Laravel 5.1雄辩关系
- 15. laravel雄辩关系错误
- 16. 查询Laravel雄辩关系
- 17. Laravel三通许多一对多雄辩关系
- 18. Laravel:雄辩关系创建多
- 19. Laravel 5.4雄辩关系不太对
- 20. 雄辩:查询多对多的关系
- 21. Laravel雄辩 - 关系是否有关系?
- 22. Laravel雄辩多对多
- 23. 使用Laravel雄辩关系(一对多)返回NULL
- 24. 测试一对多关系Laravel,雄辩不工作
- 25. Laravel雄辩地更新一对多关系
- 26. Laravel雄辩的关系'与'关键字
- 27. Laravel>使用雄辩查询多对多关系
- 28. Laravel雄辩从关系中选择
- 29. 雄辩关系
- 30. Laravel有一个一对零或一个雄辩关系吗?
https://laravel.com/docs/5.3/eloquent-relationships#one-to-many Laravel有很好的文档记录,如果你阅读文档,你不需要问这个问题。 – Devon