我有两张桌子
1)用户{ id,密码}
(2)专业知识{ id,专长}
我的关系是
模型
Expertise.php
function User()
{
$this->hasOne('Expertise');
}User.php
function Expertise()
{
$this->hasOne('User');
}那么,我如何使用雄辩来查询,以获得具有一定专业知识的前10个用户呢?我想加入users.id = expertise.id,获得具有特定专业知识的前10人(Where子句)。
初学拉拉的人,我查过其他资料,但没有成功
发布于 2014-08-14 08:13:57
现在,您对数据建模的方式存在问题。如果你有一对一的关系,最好的方法就是让一个实体存储另一个实体的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中查询关系的内容,请看以下内容:
请牢记
请记住,表名必须是复数,如果不是,则应该在模型中指定表的名称:
protected $table = 'expertise';https://stackoverflow.com/questions/25302761
复制相似问题