首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel多对多关系获取数据

Laravel多对多关系获取数据
EN

Stack Overflow用户
提问于 2015-02-06 03:44:37
回答 1查看 255关注 0票数 0

这是我的校园模型为了可读性,我剥离了模型,当然还有名为campus_user的连接表,带有id,campus_id,user_id用户现在可以订阅校园了,我想要2.让所有用户订阅特定的校园2.检查特定的用户(比如id = 1 )是否订阅了特定的校园(比如id =2)

代码语言:javascript
运行
复制
class Campus extends \Eloquent{
   protected $table = "campuses";

   public function users(){
      return $this->belongsToMany("User");
   }
}

// this is my user model

class User extends Eloquent implements UserInterface, RemindableInterface {

   use UserTrait, RemindableTrait;
   protected $table = 'users';
   protected $hidden = array('password', 'remember_token');

   public function campuses(){
      return $this->belongsToMany('\Models\Campus');
   }
}
EN

回答 1

Stack Overflow用户

发布于 2015-02-06 04:53:53

最有说服力的方式就是使用关系查询:http://laravel.com/docs/4.2/eloquent#querying-relations

一个简单的例子是返回具有任何校园的用户。

代码语言:javascript
运行
复制
// Get users with any campus relationship.
$users = User::has('campuses')->get();

然而,你需要一些更强大的东西。

用于特定“校园”中的“用户”。

代码语言:javascript
运行
复制
// Get 'users' in a 'campus' where the 'name' column equals 'foo'.
$campus = 'foo';

$users = User::whereHas('campuses', function($query) use ($campus) {
    $query->where('name', $campus);
})->get();

对于特定“校园”中的特定“用户”,代码几乎是相同的。

代码语言:javascript
运行
复制
// Find the 'user' with a primary key of '1' in the 'campus' where
// the 'name' column equals 'foo'.
$primaryKey = 1;
$campus = 'foo';

$users = User::whereHas('campuses', function($query) use ($campus) {
    $query->where('name', $campus);
})->find($primaryKey);

如您所见,最后一个示例替换了前一个示例中的get()方法。当您想要使用主键进行查询时,可以对whereHas()方法中的回调执行相同的操作。这将导致以下结果。

代码语言:javascript
运行
复制
...
$query->find($campus);
...

上面描述的所有方法都可以在Illuminate\Database\Eloquent\Builder类中找到。

我建议您查看一些源文件,以便更好地理解请求是如何处理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28352687

复制
相关文章

相似问题

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