实际上我在Laravel Eloquent中遇到问题加入三个表,其中第一个表引用第二个和第二个引用第三个,查询生成为
DB::table('factories')
->select('factories.order_id', 'factories.entry_date', 'factories.supplier_status', 'factories.remarks', 'orders.order_carpet_id', 'order_carpets.carpet_no')
->join('orders', 'orders.id', '=', 'factories.order_id')
->join('order_carpets', 'order_carpets.id', '=', 'orders.id')->get()
答案 0 :(得分:0)
首先,您尚未告诉我们您是否已经创建了模型。
如果还没有,则必须先创建它们:
php artisan make:model Factory
php artisan make:model Order
php artisan make:model Carpet
我不知道你的代码中order_carpets
是否是一个关联/数据透视表。如果是,那么您只需要Order
模型和Carpet
模型,您不必为数据透视表添加模型,并且您应该在两者上添加belongsToMany()
您在上面创建的Order
和Carpet
个模型。
然后你就可以做到:
$carpet->orders
获取包含特定地毯的订单
和
$order->carpets
以特定顺序包含地毯。
答案 1 :(得分:0)
Factory::select('factories.order_id', 'factories.entry_date', 'factories.supplier_status', 'factories.remarks', 'orders.order_carpet_id', 'order_carpets.carpet_no')
->join('orders', 'orders.id', '=', 'factories.order_id')
->join('order_carpets', 'order_carpets.id', '=', 'orders.id')->get()
将返回Factory模型。如果那就是你要找的东西。