php - Laravel 5.6 模型 HasManyThrough 3 个表的关系
问题描述
如何在 Laravel 的 3 个表之间建立关系
+---------------+ +---------------+ +-------------------+
| venue_images | | transactions | | image_transaction |
+---------------+ +---------------+ +-------------------+
| id | | id | | venue_image_id |
| user_id | | user_id | | transaction_id |
+---------------+ +---------------+ +-------------------+
这是我的代码,但它不起作用。
class Transaction extends Model
{
public function images(){
return $this->hasManyThrough(ImageTransaction::class ,VenueImage::class, 'transaction_id', 'id');
}
}
我想使用事务 id 和场所图像 id 加入三个表
在我的控制器上
$transactions = transaction::where('user_id', Auth::id())->with('images')->get();
解决方案
如果我没有误解你的问题,你有一个多对多关系的pivot
表。Eloquent 会自动按字母顺序排列数据透视表的名称,因此您需要在参数中传递您的自定义名称。[文档]image_transaction
transactions_venue_image
image_transaction
在您的VenueImage模型中
public function transactions()
{
return $this->belongsToMany('App\Transaction','image_transaction');
}
在您的交易模型中
public function venue_images()
{
return $this->belongsToMany('App\VenueImage','image_transaction');
}
还有第三个和第四个参数是相关模型的外键,在文档中有更好的解释。
在你的控制器中
$transactions = transaction::where('user_id', Auth::id())->with('venue_images')->get();
推荐阅读
- java - 迭代列表映射并将值插入到另一个包含先前列表值的自定义列表的映射。可能吗?
- python - python:导航一个 4-D numpy 数组
- python - 如何在 Plotly Sankey 图中设置各个节点的线宽?
- html - SCSS 文件未应用于我的 HTML 网页
- nusmv - nusmv/nuxmv 中的四骑士拼图
- python - 如何在 MATLAB 中使用用户定义的 python 对象?
- python-3.x - dtype 超出范围的 numpy 默认值
- python - Plotly:如何在热图上偏移网格?
- azure - 有没有办法通过 Azure API 管理中的订阅来改变速率限制的值
- node.js - Heroku git push heroku master 运行 cd client && npm run build 不停