Laravel雄辩地加入三桌

时间:2018-03-28 19:24:52

标签: php laravel

实际上我在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()

2 个答案:

答案 0 :(得分:0)

首先,您尚未告诉我们您是否已经创建了模型。

如果还没有,则必须先创建它们:

php artisan make:model Factory

php artisan make:model Order

php artisan make:model Carpet

我不知道你的代码中order_carpets是否是一个关联/数据透视表。如果是,那么您只需要Order模型和Carpet模型,您不必为数据透视表添加模型,并且您应该在两者上添加belongsToMany()您在上面创建的OrderCarpet个模型。

然后你就可以做到:

$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模型。如果那就是你要找的东西。