Laravel 5.1 - Foreach 表单中的数据 (Blade)
Laravel 5.1 - Foreach data in form (Blade)
我在显示我的产品可用颜色时遇到问题,我尝试用 blade foreach 来显示它们,但它不起作用。
我的资源控制器:
public function show($id){
$colors = Color::where('product_id', $id)->orderBy('id', 'asc');
$product = Product::where('id', $id)->first();
return view('store.show', compact('product','colors'));
}
这是我的table颜色,我添加正确的关系
产品型号:
namespace dixard;
use Illuminate\Database\Eloquent\Model;
use dixard\User;
use dixard\Category;
use dixard\Gender;
use dixard\OrderItem;
use dixard\Color;
class Product extends Model
{
protected $table = 'products';
protected $fillable =
[
'name',
'slug',
'description',
'extract',
'image',
'visible',
'price',
'category_id',
'gender_id',
'user_id'
];
// Colleghiamo OGNI prodotto ha un utente
public function user() {
return $this->belongsTo('dixard\User');
}
// Colleghiamo OGNI prodotto ha una categoria
public function category() {
return $this->belongsTo('dixard\Category');
}
public function gender() {
return $this->belongsTo('dixard\Gender');
}
// prodotto è contenuto in TANTI order item
public function OrderItem() {
return $this->belongsTo('dixard\OrderItem');
}
// prodotto è contenuto in TANTI order item
public function Color() {
return $this->belongsTo('dixard\Color');
}
}
颜色模型
namespace dixard;
use Illuminate\Database\Eloquent\Model;
class Color extends Model
{
protected $table = 'colors';
// gli dico che voglio scrivere questo campi
protected $fillable = [
'color',
'product_id',
];
public $timestamps = false;
// Ogni color HA tanti prodotti. // Ogni prodotto ha tanti colori
public function products() {
return $this->hasMany('dixard\Product');
}
}
我正在尝试显示我的产品可用的颜色,因此:
<label for="p_color">Color</label>
@foreach($colors as $color)
<td>{{ $color->color }}</td>
@endforeach
这只是测试!我想显示一个 select 选项,我尝试使用 BLADE 但它不起作用,
- 获取 product_id = $id 工作正常的所有颜色。
- 获取 id = $id 工作正常的产品。
我认为问题是代码 blade(foreach) 显示了我的产品可用的所有颜色。
我该如何解决?谢谢你的帮助!
据我所知,您没有将颜色集合(数组)传递给视图,而是传递给查询生成器。您需要添加查询执行方法,例如。 get() 到管道的末尾:
// Adding get() will execute this query
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')->get();
您没有运行get()
您的颜色查询:
public function show($id){
$colors = Color::where('product_id', $id)
->orderBy('id', 'asc')
->get(); // <-- Add this
$product = Product::where('id', $id)->first();
return view('store.show', compact('product','colors'));
}
// To select multi records,you have to use get();
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')
->get(); // add get()
// To select single record, you have to use first();
$product = Product::where('id', $id)->first();
// By the way, you can also use this statement to replace the second statement.
// This only worked for primary key and the key must be id)
$product = Product::find($id);
在查询中添加get()或all():
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')->get();
或
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')->all();
我在显示我的产品可用颜色时遇到问题,我尝试用 blade foreach 来显示它们,但它不起作用。 我的资源控制器:
public function show($id){
$colors = Color::where('product_id', $id)->orderBy('id', 'asc');
$product = Product::where('id', $id)->first();
return view('store.show', compact('product','colors'));
}
这是我的table颜色,我添加正确的关系
namespace dixard;
use Illuminate\Database\Eloquent\Model;
use dixard\User;
use dixard\Category;
use dixard\Gender;
use dixard\OrderItem;
use dixard\Color;
class Product extends Model
{
protected $table = 'products';
protected $fillable =
[
'name',
'slug',
'description',
'extract',
'image',
'visible',
'price',
'category_id',
'gender_id',
'user_id'
];
// Colleghiamo OGNI prodotto ha un utente
public function user() {
return $this->belongsTo('dixard\User');
}
// Colleghiamo OGNI prodotto ha una categoria
public function category() {
return $this->belongsTo('dixard\Category');
}
public function gender() {
return $this->belongsTo('dixard\Gender');
}
// prodotto è contenuto in TANTI order item
public function OrderItem() {
return $this->belongsTo('dixard\OrderItem');
}
// prodotto è contenuto in TANTI order item
public function Color() {
return $this->belongsTo('dixard\Color');
}
}
颜色模型
namespace dixard;
use Illuminate\Database\Eloquent\Model;
class Color extends Model
{
protected $table = 'colors';
// gli dico che voglio scrivere questo campi
protected $fillable = [
'color',
'product_id',
];
public $timestamps = false;
// Ogni color HA tanti prodotti. // Ogni prodotto ha tanti colori
public function products() {
return $this->hasMany('dixard\Product');
}
}
我正在尝试显示我的产品可用的颜色,因此:
<label for="p_color">Color</label>
@foreach($colors as $color)
<td>{{ $color->color }}</td>
@endforeach
这只是测试!我想显示一个 select 选项,我尝试使用 BLADE 但它不起作用,
- 获取 product_id = $id 工作正常的所有颜色。
- 获取 id = $id 工作正常的产品。
我认为问题是代码 blade(foreach) 显示了我的产品可用的所有颜色。
我该如何解决?谢谢你的帮助!
据我所知,您没有将颜色集合(数组)传递给视图,而是传递给查询生成器。您需要添加查询执行方法,例如。 get() 到管道的末尾:
// Adding get() will execute this query
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')->get();
您没有运行get()
您的颜色查询:
public function show($id){
$colors = Color::where('product_id', $id)
->orderBy('id', 'asc')
->get(); // <-- Add this
$product = Product::where('id', $id)->first();
return view('store.show', compact('product','colors'));
}
// To select multi records,you have to use get();
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')
->get(); // add get()
// To select single record, you have to use first();
$product = Product::where('id', $id)->first();
// By the way, you can also use this statement to replace the second statement.
// This only worked for primary key and the key must be id)
$product = Product::find($id);
在查询中添加get()或all():
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')->get();
或
$colors = Color::where('product_id', $id)->orderBy('id', 'asc')->all();