Laravel: Использование WITH и данных таблицы фильтра левого соединения - PullRequest
0 голосов
/ 04 мая 2018

К моему запросу присоединяются 4 таблицы. Я получил все ответы, кроме трех таблиц, которые имеют одно и то же имя поля 'title', и это несоответствие. Так как я могу решить эту проблему. Есть ли способ фильтрации, который я хочу до leftjoin или после leftjoin запроса.

Мой запрос выглядит так:

  $userPost =  Post::with(['product','postattributes' => function ($query) {
                        $query  ->leftjoin('attributes', 'attributes.id', '=', 'post_attributes.attribute_id')
                                ->leftjoin('categories', 'categories.id' , '=', 'attributes.category_id');
                    }])->whereUserId($user->id)->whereStatus("Active")
                    ->get();

И ответ я получил:

 "postattributes": [
            {
                "id": 1,
                "attribute_id": 1,
                "post_id": 136,
                "created_at": "2018-04-27 18:46:28",
                "updated_at": "2018-04-27 18:46:28",
                "product_id": 1,
                "category_id": 1,
                "parent_id": null,
                "title": "Shape",
                "status": "Active",
                "sort_order": 1
            },
            {
                "id": 1,
                "attribute_id": 2,
                "post_id": 136,
                "created_at": "2018-04-27 18:46:28",
                "updated_at": "2018-04-27 18:46:28",
                "product_id": 1,
                "category_id": 1,
                "parent_id": null,
                "title": "Shape",
                "status": "Active",
                "sort_order": 1
            } 
        ]

Теперь я хочу использовать title as category_title на categories таблице. как я могу это сделать?

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете использовать select для этого:

 $userPost =  Post::with(['product','postattributes' => function ($query) {
                    $query->select('categories.id', 'attribute_id','post_id', 'created_at', 'updated_at','product_id','category_id', 'parent_id', 'categoris.title as category_title', 'status', 'sort_order')
                          ->leftjoin('attributes', 'attributes.id', '=', 'post_attributes.attribute_id')
                          ->leftjoin('categories', 'categories.id' , '=', 'attributes.category_id');
                }])->whereUserId($user->id)->whereStatus("Active")
                ->get();

В select вы можете установить все необходимые поля, в этом примере я добавил все из вашего списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...