在我的电子商务项目中,我有产品和旋转木马模型。
Product.php
<?php
namespace App;
use Illuminate'Database'Eloquent'Model;
use Illuminate'Database'Eloquent'SoftDeletes;
class Product extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
protected $fillable = [
'code', 'name', 'description', 'special_note', 'sort', 'display', 'weight', 'enquiry'
];
public function carousels()
{
return $this->belongsToMany('App'Carousel')->withTimestamps();
}
}
Carousel.php
<?php
namespace App;
use Illuminate'Database'Eloquent'Model;
use Illuminate'Database'Eloquent'SoftDeletes;
class Carousel extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
protected $fillable = ['name', 'display', 'sort'];
public function products()
{
return $this->belongsToMany('App'Product')->withTimestamps();
}
public function getProductListAttribute()
{
return $this->products->lists('id');
}
}
这是控制器:
public function create()
{
$products = Product::lists('name', 'id');
return view('admin.carousels.create', compact('products'));
}
public function store(Request $request)
{
$carousel = Carousel::create($request->all());
$carousel->products()->attach($request->input('product_list'));
return redirect()->back();
}
public function edit($id)
{
$carousel = Carousel::findOrFail($id);
$products = Product::lists('name', 'id');
return view('admin.carousels.edit', compact('carousel', 'products'));
}
public function update(Request $request)
{
dd($request->all());
}
carousel表单:
<div class="col-md-4 col-sm-4">
<div class="form-group">
{!! Form::label('name', 'Name:') !!}
{!! Form::text('name', null, ['class' => 'form-control input-sm', 'id' => 'name']) !!}
</div>
</div>
<div class="col-md-4 col-sm-4">
<div class="form-group">
{!! Form::label('sort', 'Sort:') !!}
{!! Form::text('sort', null, ['class' => 'form-control input-sm', 'id' => 'sort']) !!}
</div>
</div>
<div class="col-md-4 col-sm-4">
<div class="form-group">
{!! Form::label('display', 'Display:') !!}
{!! Form::select('display', ['Disabled' => 'Disabled', 'Enabled' => 'Enabled'], null, ['class' => 'form-control input-sm', 'id' => 'display']) !!}
</div>
</div>
<div class="col-md-12 col-sm-12">
<div class="form-group">
{!! Form::label('product_list', 'Products:') !!}
{!! Form::select('product_list[]', $products, null, ['class' => 'form-control input-sm', 'multiple']) !!}
</div>
</div>
<div class="col-md-12 col-sm-12">
<div class="form-group">
{!! Form::submit($submitButtonText, ['class' => 'btn btn-primary btn-block m_top_15', 'id' => $submitButtonId]) !!}
</div>
</div>
现在,问题是,当我使用表单模型绑定来编辑carousel表单时,选择框中没有显示任何产品,尽管我可以看到要从中选择的所有产品。对于特定的旋转木马,所选产品是看不到的。
我犯了什么错误?请帮帮我。
谢谢。
p。S:我使用的是Laravel 5.1,第一次遇到这个问题。我以前在Laravel 5中这样做过,没有任何问题。
这可能与5.1中如何处理lists()
有关。从升级指南-
list Method
lists方法现在返回一个Collection实例,而不是普通的用于Eloquent查询的数组。如果你想转换集合转换为普通数组,使用all方法:
用户:列表(id) -> ();请注意Query Builder列出方法仍然返回一个数组。