首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel雄辩的关系查询

laravel雄辩的关系查询
EN

Stack Overflow用户
提问于 2014-08-14 07:52:25
回答 1查看 1.8K关注 0票数 0

我有两张桌子

1)用户{ id,密码}

(2)专业知识{ id,专长}

我的关系是

模型

Expertise.php

代码语言:javascript
复制
function User()
{

  $this->hasOne('Expertise');

}

User.php

代码语言:javascript
复制
 function Expertise()
 {
  $this->hasOne('User');

 }

那么,我如何使用雄辩来查询,以获得具有一定专业知识的前10个用户呢?我想加入users.id = expertise.id,获得具有特定专业知识的前10人(Where子句)。

初学拉拉的人,我查过其他资料,但没有成功

EN

回答 1

Stack Overflow用户

发布于 2014-08-14 08:13:57

现在,您对数据建模的方式存在问题。如果你有一对一的关系,最好的方法就是让一个实体存储另一个实体的id。Laravel的惯例是有一个名为<model>_id的列

代码语言:javascript
复制
Users
| id | password |

Expertises
| id | expertise | user_id |

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

模型

Expertise.php

代码语言:javascript
复制
class Expertise extends Eloquent
{

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

}

User.php

代码语言:javascript
复制
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个用户,您可以这样做。

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

要进一步阅读在Laravel中查询关系的内容,请看以下内容:

拉威尔-查询关系

请牢记

请记住,表名必须是复数,如果不是,则应该在模型中指定表的名称:

代码语言:javascript
复制
protected $table = 'expertise';
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25302761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档