У меня есть модель Production в моем проекте.
Каждые Productions имеют некоторые lingualValues (переводы) ... в этом случае я используйте title
:
$productions = Production::with(['lingualValues' => function ($query) {
// this query determinate that result is only one
// (by unique keys in database) or null
$query->where('language', app()->getLocale())->where('name', 'title');
}])->withCount('comments');
$productions = $productions->get();
return DataTables::of($productions)
->make(true);
Внешняя сторона выглядит так:
<table class="dataTable dt-responsive table-dark table-striped" role="grid"
data-url="{{ $url }}">
<thead>
<tr>
<th class="text-center" data-data="id">ID</th>
<th class="text-center" data-data="lingual_values.0.value">Title</th>
<th class="text-center" data-data="comments_count">Comments</th>
</tr>
</thead>
<tbody></tbody>
</table>
И теперь у меня две проблемы:
- Когда я использую
$productions = $productions->get();
до return ...
на стороне сервера поиск и сортировка по Заголовок работает правильно, но время ответа со стороны сервера действительно слишком (ox 187) ooo long. - так .. . Я могу удалить
$productions = $productions->get();
, и теперь ответ с сервера происходит очень быстро - но :( ... как поиск, так и сортировка по заголовку в этом случае не работают. Выдана ошибка: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'lingual_values.0.value' in 'where clause'
.
Есть ли у вас идеи, как я могу создать запрос, чтобы он работал - де-факто - с отношениями hasMany (для отношения ownTo, приведенного выше, второе решение отлично работает)?