laravel выберите во вложенном нетерпении загрузки - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть следующая база данных:

Project
_______
id,  project_name, customer_id
431, test,         2

Customer
________
id, customer_name
2,  good_customer

Loe
___
id, mandays, project_id
1,  10,      431

Я хотел бы использовать eloquent в laravel и выбрать следующее:

{loe_id:1,mandays:10,project_id:431,project_name:'test',customer_id:2,customer_name:'good_customer'}

Я пытался:

$project_loes = Loe::with(['project' => function($query) {
          return $query->select(['id', 'project_name']);
      }])
      ->where('project_id',$id)
      ->get();

уже там, я блокирую, потому что я получаю вложенный результат, например:

{loe_id:1,mandays:10,project:{id:431,project_name:'test'}}

Так что это не в одной строке, я получаю другой {} в рамках проекта, когда я буду хотел бы иметь все в одном результате {}.

Тогда я не могу понять, как получить вложенную часть, я попытался:

$project_loes = Loe::with(['project' => function($query) {
          return $query->select(['id', 'project_name']);
      },
                              'project.customer' => function($query) {
          return $query->select(['id', 'customer_name']);
      }])
      ->where('project_id',$id)
      ->get();

, но он возвращает мне ошибку и это связано с project.customer.

1 Ответ

0 голосов
/ 08 апреля 2020

U нужно использовать объединений

$loe = DB::table('loe')
            ->join('project', 'loe.project_id', '=', 'project.id')
            ->join('customer', 'customer.id', '=', 'project.customer_id')
            ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...