【问题标题】:Call to undefined method Laravel 5.2调用未定义的方法 Laravel 5.2
【发布时间】:2016-09-03 12:47:44
【问题描述】:

我有问题

Builder.php 第 2258 行中的 BadMethodCallException:调用未定义 方法 Illuminate\Database\Query\Builder::add()

控制器

public function Cart(Request $request, $id){

            $products_buy = Products::find($id);

            Carts::add(array('id'=>$id,'name'=>$products_buy->name_product,
                             'qty'=>1,'price'=>$products_buy->price,
                             'options'=>array('img'=>$products_buy->picture)));

            $content= Carts::content();
            return View('pay.cart')->with(
                "cart",$content
            );      
        }

【问题讨论】:

  • 你应该使用 Carts::create 代替 Carts::add 吗?
  • @Brett:谢谢你,成功了^^
  • brett,我正在写答案,你来吧,伙计
  • @Brett, @Achraf Khouadja:我有一个问题,我在更改添加后遇到错误-> 创建 MassAssignmentException in Model.php line 449: idat Model->fill(array('id' => '4', 'name' => 'Cup', 'qty' => '1', 'price' => '1000', 'options' => array('img' => 'product-harvest-moon-cup-45deg-4x3.jpg')))
  • 您可能需要将该字段更改为 product_id 而不是像 laravel 使用它作为主键而不是外键的 id 一样

标签: php laravel


【解决方案1】:

在 laravel 5.2 中正确创建条目使用

Model::create 

不是

Model::add

请注意,这会立即将其添加到数据库中。

如果您不想立即添加,请使用

$flight = new Flight;
$flight->fill($valuesArray);
$flight->save();

只有在准备好提交到数据库时才调用 save

如果您收到批量分配错误。您需要确保传递给创建或填充的数组中的所有值都设置在模型中的 $fillables 变量中。如果它不在可填充中,则无法在填充或创建方法中分配它,您必须手动执行。 $model->value_not_in_fillable = 1;

class Flight extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name'];
}

【讨论】:

  • @BiHíp 如果是正确答案,请接受它作为答案
猜你喜欢
  • 2016-12-16
  • 1970-01-01
  • 2016-04-03
  • 2017-02-20
  • 2016-12-11
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 2015-05-31
相关资源
最近更新 更多