小编Mik*_*e F的帖子

Laravel通过hasMany获得belongsToMany

我有3种型号:Conference,SessionSpeaker.会议可以有很多会议,很多会议可以有很多演讲者.

数据库结构

conferences
-----------
id
name


sessions
--------
id
conference_id
name


session_speaker
---------------
id
session_id
speaker_id


speakers
--------
id
name
Run Code Online (Sandbox Code Playgroud)

我需要编写一种方法,让我能够得到特定会议的所有发言者(所有发言人都来自该会议的所有会议).

以下说明了我认为应该起作用的内容,但显然不能,因为我无法将这些链接在一起.

应用程序/模型/ Conference.php

class Conference extends Eloquent {

  public function speakers() {
    return $this->hasMany('Session')->belongsToMany('Speaker');
  }

}
Run Code Online (Sandbox Code Playgroud)

我已经建立了所有模型 - 模型关系并且工作正常(会议 - 会话,会话 - 演讲者)但是我不能在会议 - 会话 - 演讲者之间建立桥梁.有没有人知道如何在不编写大型SQL连接查询的情况下实现这一目标?

我认为,如果有关系,belongsToManyThrough()这将有效,但没有.

提前致谢!

laravel laravel-4

8
推荐指数
1
解决办法
4212
查看次数

检查是否存在多对多关系Laravel

我有以下型号:

/* Team.php */

class Team extends Eloquent {

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

}

/* User.php */

class User extends Eloquent {

  public function teams() {
    return $this->hasMany('Team');
  }

}
Run Code Online (Sandbox Code Playgroud)

和数据库结构:

teams
  id
  user_id
  name

users
  id
  email

team_user
  id
  team_id
  user_id
Run Code Online (Sandbox Code Playgroud)

用户可以创建(并拥有-因此拥有team.user_id)一个团队,但也可以属于其他团队。

如果可能的话,我希望能够使用Eloquent来获得特定用户的所有团队,而无需执行如下自定义SQL查询:

 SELECT teams.* 
 FROM teams 
 JOIN team_user 
 ON (team_user.team_id = teams.id) 
 WHERE team_user.user_id = ?
Run Code Online (Sandbox Code Playgroud)

自定义SQL查询有效,但我确信这不是Laravel中解决此问题的本机方法。

有人可以帮忙吗?在此先感谢您的阅读。

laravel eloquent laravel-4

2
推荐指数
1
解决办法
4505
查看次数

标签 统计

laravel ×2

laravel-4 ×2

eloquent ×1