我正在尝试使用中间表连接表,例如:我有portfolios table
并且packages table
表的每一行将有许多存储在中的 imgs imgs table
,我想尝试制作一个中间表来连接它们,所以imgs table
只有 2 个列,这是详细信息:
投资组合表
portfolio_id
portfolio_name
description
包装表
package_id
package_name
price
图像表
img_id
img_name
intermediary_imgs 表
img_id
intermediary_id
portfolio_id
package_id
如果 img 仅用于投资组合,则在intermediary_imgs table
,列中的package_id
值为 0
我使用 Fluent Query Builder 实现了这一点:
DB::table('portfolios')
->select('portfolios.portfolio_id', 'portfolios.portfolio_name', 'imgs.img_id', 'imgs.img_name','imgs.intermediary_id')
->join('intermediary_imgs', 'portfolios.portfolio_id', '=', 'imgs_pivot.portfolio_id')
->join('imgs', 'intermediary_imgs.intermediary_id', '=', 'imgs.intermediary_id')
->where('portfolios.portfolio_id', '=', $id)
->get();
然后我尝试在 Eloquent 中执行此操作,但它不起作用,我尝试过:
//i already specify the relationship in the each model(Portfolio, Packages, Intermediary, Img)
Portfolios::with('imgsIntermediary')->get()
然后它将返回在特定投资组合 ID 上引用的所有 intermediary_table 数据
但我需要做另一个查询来选择imgs
适合imgs table
的intermediary_id
总是这样做是一个好习惯吗?如何使这更好?
笔记
我正在使用intermediary table
,所以当我需要创建另一个需要 img 的表时,我可以在中间表中添加 collumntable_id
ps:抱歉英语不好