卡住一对一的关系

时间:2018-12-16 15:45:42

标签: laravel eloquent

嗨,我是Laravel新手 我需要你的帮助。这是我的数据库:

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()

我知道我的查询是错误的,因为我还没有定义我想要获取状态为“启用”的所有用户的任何地方

3 个答案:

答案 0 :(得分:1)

您应该使用whereHas()此方法的第一个参数是您的关系,第二个是您的回调函数

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

答案 1 :(得分:0)

您需要使用

   Console.WriteLine();
        Random random = new Random();                                             
        int[,] arr = new int[10, 10];
        for (int i = 0; i < arr.GetLength(0); i++)                                
        {
            for (int j = 0; j < arr.GetLength(1); j++)                              
            {
                arr[i, j] = Convert.ToInt32(random.Next(0, 10));                    
                Console.Write(arr[i, j] + "\t");                                    
            }
            Console.WriteLine(" \n");

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

答案 2 :(得分:0)

要获取所有具有“启用”状态和“ 2”角色的用户:

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

您可以使用Eager Loading关键字找到有关Laravel文档的更多详细信息。

您还可以阅读this topic来了解其工作原理。