【发布时间】:2017-04-04 19:05:05
【问题描述】:
使用 Laravel 5.3,我有一个由数据透视表 product_wishlist 连接的用户、产品和愿望清单组成的数据库。架构如下:
USERS WISHLISTS PRODUCTS PRODUCT_WISHLIST
------------- ------------- -------------- ---------------
id id id product_id
name name name wishlist_id
user_id
在 App/Wishlist.php 中
public function products()
{
return $this->belongsToMany(Product::class, 'product_wishlist');
}
public function owner()
{
return $this->belongsTo(User::class);
}
在 App/product.php 中
public function wishlists()
{
return $this->belongsToMany(Whishlist::class, 'product_wishlist');
}
用户可以创建愿望清单并将产品添加到愿望清单。
在产品页面中,我正在尝试显示登录用户的所有愿望清单。
$wishlists = Auth::user()->wishlists;
但如果每个愿望清单都包含产品,我也想检索(只有当它不包含产品时,我才会在每个愿望清单附近添加一个“添加到愿望清单”按钮)。
我在 Kabelo 回答后编辑:
我想要的是显示单个产品页面,并在侧边栏中显示登录用户的所有愿望清单(每个用户都有自己的愿望清单):wishlist1(添加到列表),wishlist2(添加到列表),...但是,例如,如果此页面的产品已经在愿望清单 2 中,则不会显示“(添加到列表)”。在这些情况下,我可以显示“(从列表中删除)”
【问题讨论】:
-
您缺少白名单和产品之间的关系。有了它,您只需执行
$user->wishlist->products...之类的操作,当然您可以计算它们并进行检查