如何按存储库更新所有数据(laravel 5.3)?

时间:2017-01-22 18:38:14

标签: php laravel eloquent repository laravel-5.3

我的存储库是这样的:

<?php
namespace App\Repositories;
use App\Models\UsersBank;
use Illuminate\Contracts\Container\Container;
use Rinvex\Repository\Repositories\EloquentRepository;
class UserBankRepository extends EloquentRepository
{
    public function __construct(Container $container)
    {

        $this->setContainer($container)
             ->setModel(UsersBank::class)
             ->setRepositoryId('rinvex.repository.uniqueid');
    }
}

我的模型是这样的:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UsersBank extends Model
{
    protected $fillable = ['user_id','bank_id','status','account_name','account_number'];
}

我的服务是这样的:

public function setMain($id)
{
    $param['status'] = 1;
    $this->user_bank_repository->update($id, $param);
}

执行setMain函数时,它将通过id

更新字段状态= 1

我想将status = 1更新为所有记录。所以,不是由id

我该怎么做?

注意:

我在这里更新的意思是通过存储库进行的更新。不通过模型更新

1 个答案:

答案 0 :(得分:2)

查看软件包的update()方法的源代码,您将看到它不可能,因此您需要使用foreach()并创建一堆查询。

我的观点是这样,类似的软件包是无用的,因为它们仍在使用Eloquent并且不提供任何少数功能。我建议您直接使用Eloquent只用一个查询来更新所有行:

Model::query()->update(['status' => 1]);