【发布时间】:2019-02-27 22:06:47
【问题描述】:
我有一个应用程序,用户可以在其中拥有多本书。我已经建立了关系和中介表。但查询不起作用。
图书模型
public function user(){
return $this->belongsToMany('App\Book', 'book_user');
}
用户模型
public function book(){
return $this->belongsToMany('App\User', 'book_user');
}
创建 user_book 表迁移:
public function up()
{
Schema::create('book_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('book_id')->unsigned();
$table->foreign('book_id')->references('id')->on('books');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
});
}
图书控制器我将 book_id 和 user_id 添加到表中
public function readlist(Book $book)
{
DB::table('book_user')->insert(
['user_id' => auth()->id(),
'book_id' => request('book_id')]
);
}
在我的家庭控制器中,我尝试访问与用户相关的书籍,但结果返回 Null;
public function index()
{
$user = Auth::user();
$userbooks =$user->books;
dd($userbooks);
return view('/home');
}
【问题讨论】:
-
你为什么选择
DB而不是雄辩的attach()方法? -
我想你也需要很多
-
在您的用户模型中您编写了 book,但在家庭控制器中您编写了 $user->books