gleber1
@gleber1

Как указать нужные поля в relations?

Перебрал множество способов и не один не сработал.
News::query();
        if ($request->has('is_hidden')) {
            $query->where('is_hidden', 1);
        }
        if ($request->has('is_moderated'))
            $query->where('is_moderated', 1);
        $list = $query->with(array('source' => function ($query) {
            $query->select(['id', 'url', 'name']);
        }))->select(['id', 'image_url', 'published', 'added', 'header']);

Так в source-null
News::query();
        if ($request->has('is_hidden')) {
            $query->where('is_hidden', 1);
        }
        if ($request->has('is_moderated'))
            $query->where('is_moderated', 1);
        $list = $query->with(array('source' => function ($query) {
            $query->get(['id', 'url', 'name']);
        }))->get(['id', 'image_url', 'published', 'added', 'header'])

И так тоже
if ($request->has('is_hidden')) {
            $query->where('is_hidden', 1);
        }
        if ($request->has('is_moderated'))
            $query->where('is_moderated', 1);
        $list = $query->with('source')->get();

Вот так не null но тут я не указал поля, как сделать чтобы и поля можно было указать и в source и news
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
Denormalization
@Denormalization
Распространенная проблема. Решается добавлением ключа в список select:
$list = $query->with(array('source' => function ($query) {
    $query->select(['id', 'url', 'name', 'key_field']);
}))->select(['id', 'image_url', 'published', 'added', 'header']);


Где key_field - это поле которое у вас связывает таблицы News и Source. Например news_id, или как оно у вас там называется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AmdY
@AmdY
PHP и прочие вебштучки
У вас небольшая ошибка в первом варианте, в select не нужно передавать массив, а просто поля через запятую
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы