Как правильно построить отношение в Laravel

287
02 апреля 2017, 05:31

Имеется две таблицы users, check.

В одной содержатся данные результатов тестирования, в другой данные пользователей.

Таблицы имеют одинаковое уникальное поле, которые их связывает. 'uid'.

Пытаюсь вывести ТОП 15 работ. С кол-вом баллов и именем участника. Пытаюсь связать таблицы:

Модель

class Variant extends Model {
public $timestamps = false;
protected $table = 'check';
public $primaryKey = 'uid';
public function check() {
    return $this->hasOne('App\User','uid','uid');
}
}

И контроллер:

$infoForTable = Variant::with('check')->where('subject','inf' )->where('variant','1')->orderBy('ball2', 'desc')->paginate(15);

Пробую сделать

dump($infoForTable);

Выводит только данные вариантов

UPDATE

Получилось добиться вывода данных таким образом:

Контроллер:

  $infoForTable = Variant::with('check')->take(3)->get();

Модель:

class Variant extends Model{
public $timestamps = false;
protected $table = 'check';
public $primaryKey = 'uid';
public function check(){
    return $this->belongsTo('App\User','uid','uid');
}
}

Но теперь никак не могу добавить условие:

where('subject','inf' )->where('variant','1')->orderBy('ball2', 'desc')
Answer 1

1) Первая ошибка была в отношениях, нужен belongsTo, а не hasOne все таки по логике Вариант принадлежит пользователю а не пользователь варианту

2) Очередность выборки была не верной, сперва with, затем условия, сортировка и уже на конечном этапе кол-во и собственно выбор.

3) Так же посоветовал бы назвать функции более говорящие (или комментировать их), что бы по прошествию времени вы могли бы вспомнить, что ж это такое, тут больше подходит owner (владелец) или просто user или ученик, смотря, какую роль несет связка в данном контексте, если это человек который проверяет то не check, а например teacher

READ ALSO
Реализация многопоточности на php

Реализация многопоточности на php

Здравствуйте, есть задача реализовать перебор всех email из сайта и удалить несуществующие

335
Подключить widget без bootstrap.css

Подключить widget без bootstrap.css

Разбираюсь с Yii2Можно ли как то использовать готовый виджет (к примеру https://github

279
Генерация формы множественного числа

Генерация формы множественного числа

Здравствуй, дали задачу по PHP

253
Объединиение или наследование C++

Объединиение или наследование C++

Всем привет, разрабатываю язык программирования на c++ (надо для учёбы), но в плюсах я пока новичок, и отсюда возникают различные вопросы из раздела...

312