Как сделать запрос, когда есть массив

У меня есть три таблицы: клиент, проект и client_project.

Я хочу показать в представлении все проекты одного клиента.

Вот объясненный код:

<?php

public function editClient($id)
{
$client = Client::find($id);

// I get an array with client_id and project_id of the clients
// which is the same I pass in the URL.
$client_project = DB::table('client_project')->where('client_id',$id)->get();

// return view('cms.public.views.clients.editclient')->withClient($client);
}

Теперь я хочу показать имена проектов, когда идентификатор поля табличных проектов имеет одинаковое значение project_id в массиве $ client_project.

Вот пример того, как это сделать, если это только одно значение, может быть, может помочь.

public function editClient($id)
{
$client = Client::find($id);
$client_project = DB::table('client_project')->where('client_id',$id)->first()->project_id;
$project = DB::table('projects')->where('id',$client_project)->first();

return $project;
}

2

Решение

Используйте отношения Один ко Многим.

В модели Client.php

public function projects()
{
return $this->belongsTo('App\Project', 'client_id');
}

И в вашей модели Project.php

public function client()
{
return $this->hasMany('App\Client', 'client_id');
}

Сейчас звоните

$client_project = Client::find($id)->projects;

Вы получите подробности здесь https://laravel.com/docs/5.5/eloquent-relationships#one-to-many

1

Другие решения

Вместо того, чтобы брать first() клиентский проект, возьмите их все и используйте whereIn() метод в выборе проекта.

$projects = DB::table('projects')->whereIn('id', function ($query) {
$query->select('project_id')->from('client_project')->where('client_id', $id);
})->get();

Вот ссылка на документацию laravel: Документация по Laravel 5.5 — Запросы # where-предложения

Я отвечаю на то, что я понял по вашему запросу, который не очень ясен.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector