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

Например: Есть 2 таблицы. Пользователей и например телефонов

id|name|money
 1|Кент|0
 2|Тнек|100
 3|Нект|100

id|user_id|model|buy
 1|      1|Nokia|100
 1|      1|Xiaom|150

У пользователей 2 и 3 есть деньги на телефон Nokia, но они его еще не купили. Как получить список этих пользователей?

 Users::where('money', '>=', 100)->hasMany('Mobiles');

Я видимо совсем в трех соснах запутался. Какое отношение использовать, и какую таблицу делать подчиненной? Или здесь отношениями не обойтись, и придется выбирать их циклом?


Ответы (1 шт):

Автор решения: youngoldman

Подсказали решение. То есть чтобы выбрать пользователей, которые не купили этот телефон и у которых есть на него деньги, можно сделать так:

$users = User::whereDoesntHave('phones', function (Builder $query) {
               $query->where('model', 'Nokia');
         })->where('money', '>=', 100)
         ->get();

// в User
 public function phones()
 {
    return $this->hasMany('Phone');
 }
→ Ссылка