如何解决App \ Repositories \ FavoriteRepository :: delete()的Missing参数1? (Laravel 5.3)

时间:2017-01-27 05:32:07

标签: php laravel laravel-5.3 laravel-eloquent

我的服务是这样的:

public function delete($store_id)
{
    $result = $this->favorite_repository->delete($store_id);
    dd($result);
}

我的存储库是这样的:

public function delete($store_id)
{
    $data = self::where('favoritable_id', $store_id)->delete();
    return $data;
} 

存在错误:

  

App \ Repositories \ FavoriteRepository :: delete()缺少参数1,   呼唤   C:\ xampp \ htdocs \ mysystem \ app \ Repositories \ FavoriteRepository.php on   第45行和定义

你能帮助我吗?

更新

EloquentRepository中的删除功能如下:

public function delete($id)
{
    // Find the given instance
    $deleted  = false;
    $instance = $id instanceof Model ? $id : $this->find($id);

    if ($instance) {
        // Delete the instance
        $deleted = $instance->delete();

        // Fire the deleted event
        $this->getContainer('events')->fire($this->getRepositoryId().'.entity.deleted', [$this, $instance]);
    }

    return [
        $deleted,
        $instance,
    ];
}

2 个答案:

答案 0 :(得分:0)

好像你正在使用这个pakage:nilportugues/eloquent-repository

如果是这种情况,那么您需要将存储库代码更改为:

public function delete($store_id)
{
    return $this->remove($store_id);
} 

答案 1 :(得分:0)

您是否检查了哪个实例正在返回self::where('favoritable_id', $store_id)?它似乎正在返回您的EloquentRepository实例,而不是Model实例。 区别在于EloquentRepository的删除方法为delete($id),模型的删除方法为delete()。 所以你要么需要使用Model实例 - > gt;删除(),要么使用 - >删除($ id)你的