Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保存Laravel 5.2模型时不存在方法保存_Php_Laravel_Laravel 5.2 - Fatal编程技术网

Php 保存Laravel 5.2模型时不存在方法保存

Php 保存Laravel 5.2模型时不存在方法保存,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我有一个简单的表单,其中一个字段是“资源”。我有一个项目模型,它有很多资源。我正在尝试从表单中保存项目及其资源 Item.php: public function resource() { return $this->hasMany('App\Resource'); } public function addResource(Resource $resource) { return $this->resource->save($resource); } Re

我有一个简单的表单,其中一个字段是“资源”。我有一个项目模型,它有很多资源。我正在尝试从表单中保存项目及其资源

Item.php:

public function resource()
{
    return $this->hasMany('App\Resource');
}

public function addResource(Resource $resource)
{
    return $this->resource->save($resource);
}
Resource.php:

public function item()
{
    return $this->belongsTo('App\Item');
}
ItemsController中的我的保存方法:

public function store(CreateItemRequest $request)
{
    //get and save Item
    $item = new Item($request->all());
    Auth::user()->item()->save($item);

    //get and save Resource
    $resource = new Resource(array($request->input('resource')));
    $item->addResource($resource);

    return view('items.index');
}
在项目模型上调用addResource时,出现以下错误:

BadMethodCallException in Macroable.php line 81:
Method save does not exist.
in Macroable.php line 81
at Collection->__call('save', array(object(Resource))) in Item.php line 41
at Item->addResource(object(Resource)) in ItemsController.php line 73
at ItemsController->store(object(CreateItemRequest))
at call_user_func_array(array(object(ItemsController), 'store'), array(object(CreateItemRequest))) in Controller.php line 76
我被困在这上面太久了!任何帮助都将不胜感激。我确信这是一个简单的新手错误…

您的
addResource()
方法应该如下所示:

public function addResource(Resource $resource)
{
    $this->resource()->attach($resource->id);
}

属性
$this->resource
将解析为相关模型的实际实例。如果尚未关联任何模型,则其计算结果将为
null
。方法
$this->resource()
实际上会返回模型之间存在的关系类型(在本例中,它应该返回
illumb\Database\elount\Relations\HasMany
)。

非常感谢您,使用$this->resource()方法工作得更好!