【问题标题】:How to update all data by repository (laravel 5.3)?如何按存储库更新所有数据(laravel 5.3)?
【发布时间】:2017-01-22 18:38:13
【问题描述】:

我的仓库是这样的:

<?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

我该怎么做?

注意:

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

【问题讨论】:

    标签: php laravel eloquent repository laravel-5.3


    【解决方案1】:

    查看包的update()方法的源代码,你会发现这是不可能的,所以你需要使用foreach()并创建一堆查询。

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 2020-04-23
      • 2018-03-08
      • 2017-06-10
      • 2017-07-01
      相关资源
      最近更新 更多