Laravel Eloquent 获取比较为真的数据
Laravel Eloquent get data where comparison is true
我正在为一家时装店创建迷你库存。我将 Laravel/Voyager 与 BREAD 一起使用,一切正常。我有 2 tables Sizes
和 Products
有一个共同的列 product_code
.
我想从 Sizes
中获取结果,其中列 product_code
= Product 'product_code'
。
我在控制器中有这个查询:
$product_code = Product::all();
$allSizes = Size::where('product_code', ($product_code->product_code));
在 browse.blade.php 我有:
@foreach ($allSizes as $size)
<tr>
<td align="right">{{$size->size_name}}</td>
<td align="right">{{$size->stock}}</td>
</tr>
@endforeach
我猜 where
语句没有按预期工作。
我想根据 product_code
从 table Sizes
的每个尺寸得到相应的 stock
您错过了 运行 query
$product_code = Product::all();
# ::all() will return collection, and you can't access a property of it directly
$allSizes = Size::where('product_code', ($product_code->first()->product_code))->get();
Notice the ->get();
我认为你的做法是错误的。您的表在某种程度上 相关,您需要定义 关系 才能访问数据 Eloquently.
如果我正在构建这样一个数据库,我认为 Product
和 Size
之间的关系是 many to many。 IE。一个Product
可以有很多Size
,你也可以在某个Size
里买很多Product
。因此,您的模型之间应具有 belongsToMany()
关系。
// Product.php
protected $with = ['sizes']; // eager load product sizes
public function sizes() {
return $this->belongsToMany(Size::class);
}
// Size.php
public function products() {
return $this->belongsToMany(Product::class);
}
那你可以做
// ProductsController.php
public function show(Product $product) {
return $product;
}
试试这个
$product_code = Product::pluck('product_code')->toArray();
$allSizes = Size::whereIn('product_code', $product_code)->get();
在browse.blade.php中:
@foreach ($allSizes as $size)
<tr>
<td align="right">{{$size->size_name}}</td>
<td align="right">{{$size->stock}}</td>
</tr>
@endforeach
我正在为一家时装店创建迷你库存。我将 Laravel/Voyager 与 BREAD 一起使用,一切正常。我有 2 tables Sizes
和 Products
有一个共同的列 product_code
.
我想从 Sizes
中获取结果,其中列 product_code
= Product 'product_code'
。
我在控制器中有这个查询:
$product_code = Product::all();
$allSizes = Size::where('product_code', ($product_code->product_code));
在 browse.blade.php 我有:
@foreach ($allSizes as $size)
<tr>
<td align="right">{{$size->size_name}}</td>
<td align="right">{{$size->stock}}</td>
</tr>
@endforeach
我猜 where
语句没有按预期工作。
我想根据 product_code
从 table Sizes
stock
您错过了 运行 query
$product_code = Product::all();
# ::all() will return collection, and you can't access a property of it directly
$allSizes = Size::where('product_code', ($product_code->first()->product_code))->get();
Notice the ->get();
我认为你的做法是错误的。您的表在某种程度上 相关,您需要定义 关系 才能访问数据 Eloquently.
如果我正在构建这样一个数据库,我认为 Product
和 Size
之间的关系是 many to many。 IE。一个Product
可以有很多Size
,你也可以在某个Size
里买很多Product
。因此,您的模型之间应具有 belongsToMany()
关系。
// Product.php
protected $with = ['sizes']; // eager load product sizes
public function sizes() {
return $this->belongsToMany(Size::class);
}
// Size.php
public function products() {
return $this->belongsToMany(Product::class);
}
那你可以做
// ProductsController.php
public function show(Product $product) {
return $product;
}
试试这个
$product_code = Product::pluck('product_code')->toArray();
$allSizes = Size::whereIn('product_code', $product_code)->get();
在browse.blade.php中:
@foreach ($allSizes as $size)
<tr>
<td align="right">{{$size->size_name}}</td>
<td align="right">{{$size->stock}}</td>
</tr>
@endforeach