- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试获取收藏夹中的所有产品并像用户登录一样显示它们,收藏夹中的该产品将显示为收藏夹,否则他可以将它们添加到收藏夹。
这是我的 Controller
$products = ( new Product )
->where( 'quantity', '>', 0 )
->with( 'favorite' )
->orderBy( 'price', $sort )->get();
现在如果我制作 dd($product->favorite)
我会像这样得到最喜欢的数组
[{"id":1,"product_id":7,"user_id":1,"created_at":"2018-04-01 09:16:23","updated_at":"2018-04-01 09:16:23"}]
但如果我尝试选择此数组中的任何一个,例如 {{ $product->favorite->product_id }}
我明白了
Property [product_id] does not exist on this collection instance
我如何在 blade 中显示
@foreach($products as $product)
<div class="col-md-4 col-sm-6">
<div class="thumbnail no-border no-padding">
<div class="media">
<a class="media-link" href="{!! URL::route('products.show', $product->id) !!}">
{!! Html::image('images/products/'.$product->image, $product->name) !!}
<span class="icon-view">
<strong><i class="fa fa-eye"></i></strong>
</span>
</a>
</div>
<div class="caption text-center">
<h4 class="caption-title">{!! $product->name !!}</h4>
<div class="price">
<ins>{!! $product->price !!}</ins>
{{--<del>$425.00</del>--}}
</div>
{{ $product->favorite->product_id }}
<div class="buttons">
@if(count($product->favorite) == 1)
<span class="btn btn-theme btn-theme-transparent">
<i class="fa fa-heart text-danger"></i>
</span>
@else
{!! Form::open(['route'=>'favorite.store', 'class'=>'favorite-products']) !!}
{!! Form::hidden('product_id', $product->id) !!}
@if ( Auth::guard( 'web' )->check() != 0 )
{!! Form::hidden('user_id', Auth::guard( 'web' )->user()->id) !!}
@endif
<button class="btn btn-theme btn-theme-transparent btn-wish-list">
<i class="fa fa-heart"></i>
</button>
@endif
{!! Form::close() !!}
{!! Form::open(['route'=>'add.to.cart', 'class'=>'btn product-shoppingcart-icon']) !!}
{!! Form::hidden('pro_id', $product->id) !!}
<button class="btn btn-theme btn-theme-transparent btn-icon-left">
<i class="fa fa-shopping-cart"></i>{{ trans('interface.addToCart') }}
</button>
{!! Form::close() !!}
<a class="btn btn-theme btn-theme-transparent btn-compare"
href="#"><i class="fa fa-exchange"></i></a>
</div>
</div>
</div>
</div>
@endforeach
最佳答案
我认为当前查询效率低下。据我了解,一个产品可以被很多用户喜欢。如果您随后加载每个产品的所有收藏夹,您还将加载与当前用户不相关的收藏夹。因此,您应该只选择相关的收藏夹:
$products = Product::query()
->where('quantity', '>', 0)
->with(['favorite' => function ($hasMany) {
$hasMany->where('user_id', \Auth::user()->id);
}])
->orderBy('price', $sort)
->get();
然后您将得到每个产品的收藏夹集合,尽管集合中最多只有一个收藏夹(因为当前用户只能喜欢一个产品一次,对吧?)。所以你想访问你 View 中的东西:
@foreach($products as $product)
// ... your html here
@if(count($product->favorite))
<span class="btn btn-theme btn-theme-transparent">
<i class="fa fa-heart text-danger"></i>
</span>
@endif
// ... more html
@endforeach
说明:$product->favorite
是一个集合,因此 count()
会给出项目的数量。由于当前用户可能没有或只有一个收藏夹,因此我们会收到 0
或 1
作为结果,这也可以看作是 false
和 true
分别。
编辑:为避免未登录用户出现问题,您可以使用此查询,届时它不会加载收藏夹
关系。
$products = Product::query()
->where('quantity', '>', 0)
->orderBy('price', $sort)
->when(\Auth::check(), function ($query) {
$query->with(['favorite' => function ($hasMany) {
$hasMany->where('user_id', \Auth::user()->id);
}]);
})
->when(\Auth::guest(), function ($query) {
$query->with(['favorite' => function ($hasMany) {
// will exclude all rows but flag the relation as loaded
// and therefore add an empty collection as relation
$hasMany->whereRaw('1 = 0');
}]);
})
->get();
或者如果有人不喜欢总是返回零行的奇怪的数据库调用,我们也可以手动设置关系:
$products = Product::query()
->where('quantity', '>', 0)
->orderBy('price', $sort)
->when(\Auth::check(), function ($query) {
$query->with(['favorite' => function ($hasMany) {
$hasMany->where('user_id', \Auth::id());
}]);
})
->get();
if (\Auth::guest()) {
$products->each(function ($product) {
$product->setRelation('favorite', new \Illuminate\Database\Eloquent\Collection());
});
}
关于php - 拉维尔 5.4 : get products with favorite and display favorites product for each user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49596609/
这个问题我已经问了自己很长一段时间了,所以我决定在这里问你们。 假设我有一个 Shop 对象,其中包含一个 ProductList 对象作为实例变量。我的 Shop 对象的核心功能当然是能够添加 Pr
我正在做应用内购买功能。今天我遇到了一个奇怪的问题。 我尝试通过 SKProductsRequest 获取列表产品。问题是:有时我收到 invalidProductIdentifiers,但有时我收到
假设您有一个名为 Product 的表,它有一个自动编号/标识列。您将其简单命名为 Id 还是将其命名为 ProductId 或 Product_Id?请解释原因。 最佳答案 没有明确的答案,因为这取
假设我销售多个产品。有时,product 实际上是其他product 的组合。例如,假设我正在销售: 热狗 苏打水 热狗+汽水组合 我应该如何建模这样的东西?我是否应该有一个 product 表来列出
有人可以建议为用户可以购买某些产品的页面添加正确的 Schema.org 标记的最佳方法吗?我正在那里添加 Product 标签(用于 Rich Snippets)。 我想增加询问有关该产品的问题的可
我正在尝试在 xml 表中查找一些数据。 如果像这样删除命名空间,我可以从 xml 中获取数据: $nodes = $data->xpath('//Products/Product/produ
我很喜欢这个程序。有人可以告诉我我做错了什么吗?该程序提示用户输入产品目录中的产品数量。然后程序应提示用户输入产品目录中每个产品的名称和价格。输入所有产品后,程序应输出目录中最昂贵产品的产品信息(名称
我有一个表 product(id, name),其中包含几组产品,型号不同。即 {motor10、motor20、motor30、pipe10、pipe20、pipe30、wrench12、wrenc
这里我声明了产品类变量并分配了它。 产品.java public class Product { String[] name= new String[100]; int price;
我在构建服务器之一上遇到此错误。所有其他服务器都可以正常构建。有什么想法可能是错误的吗? 最佳答案 我也有此错误,它似乎是在创建新设置时从Wix自动生成的新事物。当我从3.5升级到3.6时,Wix不喜
我想在同一个模型中制作字段product.product 假设 A 取决于 lst_price of product.product . 如果用户未设置 A 的值,则取 lst_price 但如果用户
我有一个以类别和产品作为属性的列表,我希望将属于不同列表中的类别的所有产品分开。 目前我有这个 Products products = new Products(); products
我们正在构建一个网络数据库系统,我们需要允许某些产品由其他产品制成。例如,将 2 个或多个产品组合为新产品。我们正在使用 CakePhp 和 MySQL。 这是我们数据库的数据结构图: https:/
我想给这段代码添加样式: 我试着这样说: 'font-weight:bold;')); ?> 但它给我这个错误信息: 警告 (2):htmlspecialchars() 期望参数 4 为 bool
我正在使用 Ruby on Rails 构建一个主要用于存储产品的数据库。我主要关心的问题之一是,在未来,我希望能够知道这两种产品的兼容性。 我不知道如何以“Rails 方式”构建它。首先,我正在考虑
如果我错了,请纠正我,但据我从文档中理解, --env option ONLY 用于能够在 webpack.config.js 内访问它如果它导出一个函数,例如 module.exports = fu
我正在尝试将 Commerce 产品类型绑定(bind)到我自己的自定义类型节点(用作显示节点)。目标是在尽可能少的地方输入新数据。因此,我正在探索在创建另一种类型时基于规则创建一种类型。似乎两个方向
我想弄清楚如何重命名或翻译 /product/和 /product-category/ WooCommerce 中的蛞蝓。 我不想完全删除它们,我只想将它们重命名为 /lesson/和 /lesson
我在 Google Search Console 中收到一条警告,指出“未提供全局标识符(例如 gtin、mpn、isbn)”。问题是,我的产品没有这样的东西。关于如何向 Google 表明不存在此类
我正在寻找 Julia 中元素矩阵乘法的就地实现,又名 Schur 乘积,又名 Hadamard 乘积。 它可以通过 A .* B 分配来执行,但我不能在每次执行此操作时分配额外的内存。 当然我可以自
我是一名优秀的程序员,十分优秀!