Laravel雄辩的关系查询


laravel eloquent relationships queries

我有两个表
1)用户{id, password}
2)expertise {id, expertise}

我的关系是

Expertise.php

function User()
{
  $this->hasOne('Expertise');
}

User.php

 function Expertise()
 {
  $this->hasOne('User');
 }

那么我如何使用Eloquent查询获得具有特定专业知识的前10个用户呢?我想加入用户。Id =专长。id并获得前10个具有指定专业知识的人(Where子句)。

初学者到laravel,我已经检查了其他来源,但没有成功

现在您对数据建模的方式有问题。如果您有一个一对一的关系,那么建模的最佳实践是让一个实体存储另一个实体的id。Laravel的约定是有一个名为<model>_id:

的列。
Users
| id | password |
Expertises
| id | expertise | user_id |

然后在你的模型中你可以这样做:

模型

Expertise.php

class Expertise extends Eloquent
{
    public function User()
    {
          // because expertise has a column user_id
          // expertise belongs to user
          return $this->belongsTo('User');
    }
}

User.php

class User extends Eloquent
{
     public function Expertise()
     {
          // because expertise is the one with the column 
          // user_id, user has one expertise
          return $this->hasOne('Expertise');
     }
}
查询

设置好所有这些之后,为了能够查询前10个具有特定专业知识的用户,您可以这样做。

$users = User::whereHas('Expertise', function($q)
         {
               $q->where('expertise', '=', <expertise you are looking for>)
         })
          ->take(10)
          ->get();

要进一步了解在Laravel中查询关系,请查看以下内容:

Laravel -查询关系

Keep in mind

请记住,表名必须是复数,如果不是,那么您应该在模型中指定表名:

protected $table = 'expertise';