如何解决 Missing argument 1 for App\Repositories\FavoriteRepository::delete()?(Laravel 5.3)
如何解决 Missing argument 1 for App\Repositories\FavoriteRepository::delete()?(Laravel 5.3)
我的服务是这样的:
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; }
存在错误:
缺少参数1,用于App\Repositories\FavoriteRepository::delete()的调用,
调用位置
C:\xampp\htdocs\mysystem\app\Repositories\FavoriteRepository.php的第45行并且定义在
你能帮我吗?
更新
EloquentRepository中的delete函数如下:
public function delete($id) { // 查找给定实例 $deleted = false; $instance = $id instanceof Model ? $id : $this->find($id); if ($instance) { // 删除实例 $deleted = $instance->delete(); // 触发删除事件 $this->getContainer('events')->fire($this->getRepositoryId().'.entity.deleted', [$this, $instance]); } return [ $deleted, $instance, ]; }
原因:出现该问题的原因是因为使用了错误的包,导致调用了不存在的方法。
解决方法:需要修改存储库代码,将 delete 方法替换为 remove 方法。具体代码如下:
public function delete($store_id) { return $this->remove($store_id); }
如果不使用 where 条件,会出现错误:Call to undefined method Illuminate\Database\Query\Builder::remove()。
检查 composer.json 文件,确认是否使用了正确的包。如果没有使用 nilportugues/eloquent-repository 包,则需要查看使用的是哪个包。
文章内容如下:
在 Laravel 5.3 中出现了 "Missing argument 1 for App\Repositories\FavoriteRepository::delete()" 的问题。原因是使用了错误的包,具体来说是 nilportugues/eloquent-repository 这个包。
解决该问题的方法是修改存储库代码,将 delete 方法替换为 remove 方法。代码如下:
public function delete($store_id) { return $this->remove($store_id); }
如果不使用 where 条件,则会出现错误:Call to undefined method Illuminate\Database\Query\Builder::remove()。
在解决问题之前,请先确认是否使用了正确的包。检查 composer.json 文件,确认是否使用了 nilportugues/eloquent-repository 包。如果没有使用该包,则需要查看使用的是哪个包。