До того, как изменить код запроса в форме поиска, я использовал приведенный ниже запрос, и он отлично работал.
...
$query = Job::where('is_trash', 0);
$query = $query->where('created_at', '>=', Carbon::parse($rFrom)->startOfDay())
->where('created_at', '<=', Carbon::parse($rTo)->endOfDay())
->where('customer_name', 'like', '%' . $rName . '%')
->where('project_name', 'like', '%' . $rProject . '%')
->where('job_type', 'like', '%' . $rType . '%');
...
Но теперь я изменил структуру таблицы, как показано ниже, для отображения имени поля с помощью реляционных запросов.
Таблица заданий
+----------------------------------------------------+
ID | customer_id | job_project_id | job_type_id | ...
+----------------------------------------------------+
1 | 1 | 1 | 1 | ...
+----------------------------------------------------+
2 | 2 | 7 | 2 | ...
+----------------------------------------------------+
Таблица заданий проекта
+-------------------------------+
ID | customer_id | name | ...
+-------------------------------+
1 | 1 | 1 |...
+-------------------------------+
2 | 2 | 7 | ...
+-------------------------------+
Таблица заданий типа
+------------------+
ID | name | ...
+------------------+
1 | test1 |...
+------------------+
2 | test2 | ...
+------------------+
Также включены, как показано ниже, простые отношения в модели Job.Эти вещи определили тип varchar как строку.но модель Job определила только идентификатор этой модели как customer_id, project_id и jobType_id в таблице заданий.
...
public function user()
{
return $this->hasOne(User::class);
}
public function customer()
{
return $this->hasOne(Customer::class);
}
public function jobProject()
{
return $this->hasOne(JobProject::class);
}
public function jobType()
{
return $this->hasOne(JobType::class);
}
...
Основной вопрос состоит в том, что если входными данными поиска являются customer_name, project_name и job_type, то как сделать цепочку реляционных запросов запроса для?потому что таблица Job просто включает эти идентификаторы.