我已经搜索了很多,找不到解决方案。我有3个表,一个shopping_carts表,一个产品,最后是一个items表。我已经创建了一个eshop,我想在用户单击“添加到购物车”按钮后显示每种产品的数量。我的代码在下面,但是仅返回item表中存在的产品及其逻辑。我需要项目表中该产品的数量,但我还需要产品表中的其余产品。
return $query = Product::select('title','price','imageUrl','quantity','products.id')
->join('items','items.product_id','=','products.id')
->where('shopping_cart_id', '=' ,$id)->get();
答案 0 :(得分:0)
您可以通过两种方式实现这一目标:-
第一个是通过使用此处https://laravel.com/docs/5.7/eloquent-relationships
的关系第二个是通过修改现有查询:-
return $query = Product::select('title','price','imageUrl','quantity','products.id')
->leftJoin('items','items.product_id','=','products.id')
->where('shopping_cart_id', '=' ,$id)->get();
答案 1 :(得分:0)
尝试一下
$products = DB::table('items')
->join('products', 'items.product_id', '=', 'products.id')
->where('shopping_cart_id', '=' , $id)
->get();
或使用关系
class ShoppingCart extends Model
{
public function items()
{
return $this->hasMany('App\Item');
}
}
class Item extends Model
{
public function product()
{
return $this->belongsTo('App\Product');
}
}
然后使用
$shopping_cart = ShoppingCart::with(['items', 'items.product'])->find($id);
所有产品的最新答案
Product::select('products.id', 'products.title', 'products.price', 'products.imageUrl',
DB:raw('(CASE WHEN items.qunatity IS NULL THEN 0 ELSE items.qunatity END) as quantity')
->leftJoin('items', function($join) use($id){
$join->on('products.id', '=', 'items.product_id')
->on('items.shopping_cart_id', '=', $id);
})->get();
答案 2 :(得分:0)
我找到了答案,对noufalcep代码进行了一些更改
return Product::select('products.id', 'products.title', 'products.price', 'products.imageUrl',
DB::raw('CASE WHEN items.quantity IS NULL THEN 0 ELSE items.quantity END as quantity'))
->leftJoin('items', function($join) use($id){
$join->on('products.id', '=', 'items.product_id')
->where('items.shopping_cart_id', '=', $id);
})->get();