如何解决 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)的主要内容,如果未能解决你的问题,请参考以下文章