Database design Laravel 4-数据库设计
我有以下要求:Database design Laravel 4-数据库设计,database-design,laravel-4,Database Design,Laravel 4,我有以下要求: 用户可以将书籍添加到收藏 集合有不同的类型(可能是模型):愿望列表、观察列表、偏好列表 Book可以是多种收集类型的一部分(例如,可以在愿望列表和观察列表中) 因此,到目前为止,我拥有的模型是:User和Book 我想以一种非常简单的方式接触这些关系,例如 $wishlist = $user->collections()->wishlist; $watchlist = $user->collections()->watchlist; 这两个变量应该包
可以将用户
添加到收藏书籍
- 集合有不同的类型(可能是模型):愿望列表、观察列表、偏好列表
可以是多种收集类型的一部分(例如,可以在愿望列表和观察列表中)Book
User
和Book
我想以一种非常简单的方式接触这些关系,例如
$wishlist = $user->collections()->wishlist;
$watchlist = $user->collections()->watchlist;
这两个变量应该包含一组书籍
我还想访问不同的收藏,这样我可以计算出某本书在任何用户的愿望列表中出现了多少次。例如
$book = Book::find(1);
$wishlist_count = $book->collections()->wishlist->count();
如何对这些关系进行建模?为每种类型设置数据透视表:
// You can call the relations pretty easily:
$user->booksWishlist; // collection of Book models
$book->usersWatchlist->count(); // get count on the Collection of User models
// or alternatively
$book->usersWatchlist()->count(); // get count() on SQL query on related users
// tables:
book_user_wishlist: user_id, book_id, .. (id, timestamps and whatever you need)
book_user_watchlist: user_id, book_id, .. (id, timestamps and whatever you need)
// and so on..
// --- Relations ---
// User model
public function booksWatchlist()
{
return $this->belongsToMany('Book', 'book_user_watchlist');
}
public function booksWishlist()
{
return $this->belongsToMany('Book', 'book_user_wishlist');
}
// Book model
public function usersWatchlist()
{
return $this->belongsToMany('User', 'book_user_watchlist');
}
public function usersWishlist()
{
return $this->belongsToMany('User', 'book_user_wishlist');
}
如果您需要更强大的..list模型,您可以为每个列表设置自定义透视模型,覆盖用户模型和书本模型上的newPivot()方法。这很有效。非常感谢。一个小的、相关的后续问题:在
Book
模板中,如何检查用户是否在其收藏中拥有该书?例如,当书籍已经在用户的愿望列表中时,向div添加一个类。