Застрял отношения один к одному Laravel - PullRequest
0 голосов
/ 16 декабря 2018

Привет, ребята. Я новичок в Ларавеле, я хочу вашей помощи.Вот моя база данных:

user: id, name, surname, email, role

user_informations: id, user_id, status

Мне нужны имена всех пользователей, для которых включен статус.

Что я делаю так:

User.php

public function information()
    {
        return $this->hasOne('App\UserInformation');
    }

UserInformation.php

 public function guider()
    {
        return $this->belongsTo('App\User');
    }

Это мой запрос:

 $users =User::where('role', '2')->information()->get();

Вызов неопределенного метода Illuminate \ Database \ Eloquent \ Builder :: information ()

Я знаю, что мой запрос неверен, потому что я нигде не определил, что я хочу, чтобы все пользователи со своим статусом 'enable'

Ответы [ 3 ]

0 голосов
/ 16 декабря 2018

Чтобы получить всех пользователей со статусом «enable» и ролью «2»:

$users = User::where('role', '2')->with(['information' => function($query) {
         $query->where('status', 'enable');
}])->get();

Более подробную информацию о документах Laravel можно найти с ключевым словом Eager Loading.

Также выможете прочитать эту тему , чтобы узнать, как это работает.

0 голосов
/ 16 декабря 2018

Вы должны использовать whereHas() первый параметр этого метода - ваше отношение , а второй - ваша функция обратного вызова

$users =User::where('role', '2')->whereHas('information',function($query){
    return $query->where('status','enable')
})->get();
0 голосов
/ 16 декабря 2018

Вам нужно использовать с

$users = User::where('role', '2')->with('information')->get();

или

$users =User::where('role', '2')->get();

foreach($users as $user) {
    dump($user->information);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...