我被困在这个看似简单的任务上。
我有一个用户,他有很多商店,有很多产品。。
我正在尝试为某个用户获取所有产品。
这是有效的,并返回商店与他们的产品
\Auth::user()->shops()->with('products')->get();
但是我只需要产品的集合。我尝试了以下方法,但它搞砸了查询
\Auth::user()->shops()->with('products')->select('products.*')->get();
知道我做错了什么吗?非常感谢。
在这种情况下,您可以使用延迟加载:
auth()->user()->load('shops.products');
要迭代产品,请执行以下操作:
@foreach (auth()->user()->shops as $shop)
@foreach ($shop->products as $product)
{{ $product->name }}
@endforeach
@endforeach
如果您只需要产品:
Product::whereHas('shop', function ($q) {
$q->where('user_id', auth()->id());
})->get();
在这两种情况下,对DB的查询数量相同,因此我将在实际应用程序中使用第一个示例。
你需要的是用户模型和产品模型之间的关系。
这是可能的使用hasManyBy
关系...
用户模型
public function products()
{
return $this->hasManyThrough('App\Product', 'App\Shop')
}
现在,您可以使用访问用户的所有产品
Auth::user()->products;
你可以用这个:
\Auth::user()->shops()->with('products')->get()->pluck('products')->flatten();
如果不想复制,可以使用-
如果要直接处理查询(用于性能):
Product::whereHas('shops', function($query){
$query->where('user_id', auth()->user()->id);
})->get();
我有users表,它与vendordetails表有hasOne关系。 vendordetails表包含country_id、state_id和city_id,与Country、State和City模型有归属关系。 vendorDetail.php模型为:- 如果我查询users表,如何获取国家、州和城市的记录。 在这个查询中,它只找到vendordetails表的结果,我还想要country、s
我正在构建一个小应用程序,以便在Laravel7中试验多对多关系。此应用程序涉及项目和用户(多对多)。 经过身份验证的用户可以创建新项目。每个项目都有自己的页面。在项目页面上,将呈现一个列表,其中包含作为该项目成员的每个用户的名称,在每个名称旁边是一个按钮,该按钮将从该项目中删除特定用户/成员。 现在,我被困在“删除用户”功能上。我不明白如何获取列表中每个用户的id,并将其传递给将“分离”多对多关
我试图显示每个评论块中的用户名。目前,我已经让它显示文章注释和注释主体,但在我的表中,我已经为每个注释分配了用户id。我可以让它显示用户id,但我不确定如何查找分配给该用户id的用户名。 查看: 示范条款: 模型注释: 物品管理员: 错误: SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“users.comments\u id”(SQL:select*fromwhe
我有3个模型和一个透视表: 学校年-模型 ID 课程模式 ID schoolyear_id 课程\学生-数据透视表 课程号 学生证 学生模型 ID 关系是: 一学年有许多课程 一门属于任何学生的课程 在任何课程中的学生 什么是最快、更优雅的方法来找到学生进入一个学年,并且能够按学生属性进行排序?
我正在与Laravel 5.4合作。我正在使用雄辩的ORM。我已经创建了以国家和州为单位的表格。二者的描述如下: 国家表: 国家表: 现在,我编写了两个方法来设置状态和国家表之间的关系。 国家型号: 状态模型: 现在,我将创建编辑功能,以便无法获取国家名称。 我已将查询写成 在这里,我得到的只有州数据和国家数据为空。 那么,为了获得州和国家数据,我应该做些什么改变呢?
但是,它没有从地址表返回正确的。我怎么能那么做? 这是我得到的错误消息: