我想在Eloquent中建立多对多的关系。 我有3张桌子
每个客户都可以拥有许多资产。 每种资产都可以有很多产品。
目前,它们与2个中间表连接
我想我现在需要将这两个中间表与另一个中间表连接起来
但这是否允许在Eloquent?可能吗?这是好习惯吗?
如何将2个中间表与新的中间表连接?
如果你把它想象成一个有很多公共汽车的客户,每辆公共汽车都可以有很多乘客...这就是我所追求的。
感谢您提供任何帮助/信息。
答案 0 :(得分:0)
一切都很好。由ORM决定客户端拥有哪些产品,并且已经拥有数据库中的所有信息。通过正确命名的关系方法,您可以使用这样的急切加载......
$client = Client::with( array( 'assets', 'assets.products' ) )->where_id( 9000 )->first();
// $client->assets array of assets
// $client->assets[0]->products array of products
您还可以通过执行类似
的操作获得平面产品列表$products = Product::join( 'asset_products', 'asset_product.products.id', '=', 'products.id' )
->join( 'client_asset', 'client_asset.assets_id', '=', 'asset_products.assets_id' )
->where( 'client_asset.client_id', '=', 9000 )
->get( 'products.*' );
如果这是我经常做的事情,我会将其作为方法添加到客户端模型中。