How can I do this with Eloquent Relationship(我怎样才能用雄辩的关系做到这一点呢?)
本文介绍了我怎样才能用雄辩的关系做到这一点呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在处理一个在线商店项目,我想创建添加到收藏系统,以便用户将他们喜欢的产品添加到他们的收藏列表中。
所以我创建了一个名为favourite_products
的表,其内容如下:
所以usr_id
代表用户id,prd_id
代表产品id。
这里是User.php
型号:
public function favourites()
{
return $this->belongsToMany(Product::class, 'favourite_products', 'usr_id', 'prd_id')->withTimestamps();
}
这是Product.php
型号:
public function favouritees()
{
return $this->belongsToMany(User::class, 'favourite_products', 'prd_id', 'usr_id');
}
现在我想从此表中获取所有数据。
因此我尝试将此内容添加到控制器:
public function index()
{
$favouriteProducts = FavouriteProduct::all();
return view('admin.shop.favourites.all', compact('favouriteProducts'));
}
然后在刀片中:
@foreach($favouriteProducts as $fav_pro)
@php
$member_info = AppUser::where($fav_pro->usr_id)->first();
$product_info = AppShopProduct::find($fav_pro->prd_id);
@endphp
<tr class="closest-tr">
<td>{{ ++$menuCounter }}</td>
<td>{{ $member_info->usr_name }}</td>
<td>{{ $product_info->prd_name }}</td>
</tr>
@endforeach
但是我想知道,我如何通过User和Product Models关系检索usr_name
&;prd_name
?因此,我不需要在视图中添加Model name并从中获取数据.
我在控制器上尝试了这两个,但都是错误的:
Product::whereHas('favouritees')->get(); // if two different users add same product, it returns only one of them
User::whereHas('favourites')->get(); // if a user add different products, it returns only one of them for the user
所以问题是,我如何才能在具有User或Product多对多关系的表中显示favourite_products
的所有结果?
推荐答案
若要获取所有数据(产品和喜欢该产品的用户),请获取与其相关的所有产品
$products = Product::whereHas('favouritees')->with('favouritees')->get();
// if two different users add same product, it returns only one of them but it will have two users in the relation favouritees
然后您可以在刀片中循环它们
@foreach($products as $product)
@foreach($product->favouritees as $user)
<tr class="closest-tr">
<td>{{ ++$menuCounter }}</td>
<td>{{ $user->usr_name }}</td>
<td>{{ $product->prd_name }}</td>
</tr>
@endforeach
@endforeach
这篇关于我怎样才能用雄辩的关系做到这一点呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:我怎样才能用雄辩的关系做到这一点呢?
猜你喜欢
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01