Laravel 5.4 поиск в таблицах данных по отношениям ownToMany - PullRequest
0 голосов
/ 06 августа 2020

У меня есть модель 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>

И теперь у меня две проблемы:

  1. Когда я использую $productions = $productions->get(); до return ... на стороне сервера поиск и сортировка по Заголовок работает правильно, но время ответа со стороны сервера действительно слишком (ox 187) ooo long.
  2. так .. . Я могу удалить $productions = $productions->get();, и теперь ответ с сервера происходит очень быстро - но :( ... как поиск, так и сортировка по заголовку в этом случае не работают. Выдана ошибка: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'lingual_values.0.value' in 'where clause'.

Есть ли у вас идеи, как я могу создать запрос, чтобы он работал - де-факто - с отношениями hasMany (для отношения ownTo, приведенного выше, второе решение отлично работает)?

...