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

Posted

技术标签:

【中文标题】如何解决 App\\Repositories\\FavoriteRepository::delete() 的缺失参数 1? (Laravel 5.3)【英文标题】:How to solve Missing argument 1 for App\Repositories\FavoriteRepository::delete() ? (Laravel 5.3)如何解决 App\Repositories\FavoriteRepository::delete() 的缺失参数 1? (Laravel 5.3) 【发布时间】:2017-06-12 18:04:38 【问题描述】:

我的服务是这样的:

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 上 第 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,
    ];

【问题讨论】:

App\Repositories\FavoriteRepository 扩展了哪个类? @Angry Coder,EloquentRepository 检查更新的答案 @Angry Coder,我更新了我的问题 @Angry Coder, App\Repositories\FavoriteRepository : public function delete($store_id) $data = self::where('favoritable_id', $store_id)->delete(); return $data; 【参考方案1】:

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

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

public function delete($store_id)

    return $this->remove($store_id);
 

【讨论】:

如果不使用条件where? 存在错误:Call to undefined method Illuminate\Database\Query\Builder::remove() 你在用nilportugues/eloquent-repository这个包吗?签入您的 composer.json 文件 没有。我用rinvex/repository【参考方案2】:

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

【讨论】:

以上是关于如何解决 App\Repositories\FavoriteRepository::delete() 的缺失参数 1? (Laravel 5.3)的主要内容,如果未能解决你的问题,请参考以下文章

如何解决包冲突问题

如何解决包冲突问题

如何解决ajax跨域问题

MySQL 的 10048问题,如何解决?

如何解决smartgit的冲突问题

如何解决https传输图片的问题