Таблица структураEloquent: Как найти в текстовых файлах через полиморфные отношения?
entity
id - integer
title - string
...
person
id - integer
name - string
...
customers
id - integer
body - text
concrete_id - integer
concrete_type - string
Модель:
class Customer extends Model
{
...
public function concrete()
{
return $this->morphTo();
}
...
}
Person и Entity модель имеет
public function customers()
{
return $this->morphMany(Customer::class, 'concrete');
}
Как найти все клиент, где типа является 'лицом' и где y.title = 'abc'?
Я пытаюсь сделать что-то вроде этого,
$obj = Customer::whereHas(['concrete' => function($query){
$query->where('title', 'like', 'foo%');
}])->get();
, но у меня есть ошибка:
ContextErrorException in Builder.php line 825: Warning: strpos() expects parameter 1 to be string, array given
Например, я могу сделать это с помощью нативного запроса MySQL:
SELECT *
FROM `customers`
LEFT JOIN `entities` ON (entities.id = customers.concrete_id)
WHERE `concrete_type` = "entity" AND entities.title LIKE "%foo%"
Как это сделать через Eloquent?
гм, нет, это dosn't работа обусловлено в этом случае конкретная модель не типа определены. Модель лица не имеет столбца заголовка. Мне нужен поиск текста только для клиентов типа Entity. – Stanislav
Мне интересно :) ... update answer –
Ваш второй метод - это хорошо работать. Но проблема в том, что это решение возвращает коллекцию моделей Entity. Но мне нужна коллекция клиентов. Я обновил вопрос и добавил пример решения через собственный запрос SQL. Посмотрите, и вы лучше поймете проблему. – Stanislav