我已经阅读了一些关于此的主题,但他们设法解决了我的问题......
这是我的控制器
class DeskController extends BaseController{
public function getDeskUsers($deskId){
$user = DeskUserList::where(function($query) use ($deskId){
$query->where('deskId', $deskId);
})->with('userName')->get(array('deskId'));
if (!$user->isEmpty())
return $user;
return 'fail';
}
这是模型
class DeskUserList extends Eloquent {
protected $table = 'desk_user_lists';
public function userName(){
return $this->belongsTo('User', 'userId')->select(array('id','userName'));
}
}
方法getDeskUsers可以返回所有与User表记录相关的DeskUserList表记录(在deskUserList.userId = User.id上)。
实际上我想要返回的每条记录都包含:
DeskUserList.deskId
User.userName
例如。 [{" deskId":" 1"" USER_NAME":安东尼奥}]
我得到的是
[{" deskId":" 1"" USER_NAME":空}]
如您所见,用户名是空值...
BUT
如果我编辑控制器代码:
->with('userName')->get(array('userId')); //using userId rather than deskId
然后我得到了
[{"用户id":" 2"" USER_NAME" {" ID":" 2" "用户名":"安东尼"}}]
通过这种方式我还有两个问题:
答案 0 :(得分:1)
您需要belongsToMany
,无需表示该数据透视表的模型。
我认为您的模型是Desk
和User
:
// Desk model
public function users()
{
return $this->belongsToMany('User', 'desk_user_list', 'deskId', 'userId');
}
// User model
public function desks()
{
return $this->belongsToMany('Desk', 'desk_user_list', 'userId', 'deskId');
}
然后:
$desks = Desk::with('users')->get(); // collection of desks with related users
foreach ($desks as $desk)
{
$desk->users; // collection of users for particular desk
}
// or for single desk with id 5
$desk = Desk::with('users')->find(5);
$desk->users; // collection of users
$desk->users->first(); // single User model