使用laravel 5.1

时间:2015-09-21 06:31:23

标签: php forms laravel laravel-5.1

在我的电子商务项目中,我有Product和Carousel Model。

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());
}

轮播形式:

<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>

现在,问题在于,当我使用表单模型绑定来编辑轮播表单时,我没有在选择框中显示任何产品,但我可以看到所有可供选择的产品。特定轮播没有看到所选产品。

我犯了什么错误?请帮助我。

感谢。

P.S:我正在使用Laravel 5.1并且第一次遇到了这个问题。之前我曾经在Laravel 5中做过这个,没有任何问题。

1 个答案:

答案 0 :(得分:0)

这可能与5.1中lists()的处理方式有关。从升级指南 -

  

列表方法

     

现在,lists方法返回Collection实例而不是plain实例   用于Eloquent查询的数组。如果你想转换   收集到普通数组中,使用all方法:

     

用户::列表( 'ID') - &GT;所有();请注意查询生成器列出方法   仍然返回一个数组。