首先看一下代码:
<?php
class User extends Eloquent {
public function books()
{
return $this->belongsToMany('Book');
}
}
class Book extends Eloquent {
public function users()
{
return $this->belongsToMany('User');
}
}
我想找一个ID为'1'的用户,并获得等于某事的书名,如此
User::with(array('Book' => function($query)
{
$query->where('bookname','www')->get();
}));
但它返回一个用户信息和空数组, 用户:{ 名称:'xxx', xxx:'xxx', 书籍:[] };
谁能帮我解决这个问题?非常感谢你!
答案 0 :(得分:0)
尝试:
$user = User::find($user_id)->books()->where('bookname', '=', 'www')->first();
这些也可以帮到你:
用书籍抓住所有用户:
$users = User::with('books')->get();
抓住所有拥有图书的用户:
$users = User::has('books')->get();
用书籍抓住一个用户:
$user = User::with('books')->find($user_id);
答案 1 :(得分:0)
如果要使用查询范围,可以在指定范围内应用连接。
class User extends Eloquent {
public function books()
{
return $this->belongsToMany('Book');
}
public function scopeByBookName($q, $bookName) {
return $q->join('user_books as pivot', 'pivot.user_id', '=', 'users_id')
->join('books', 'books.id', '=', 'pivot.book_id')
->where('books.name', $bookName);
}