重构代码使其与数据库无关

时间:2018-06-22 07:03:47

标签: laravel laravel-5 eloquent

实际上我有两个问题:

1)是否可以将Laravel临时配置为与数据库无关的调用,并且仅在代码中实例化的模型上工作?换句话说,在使用模型和关系时要防止任何数据库访问。

2)我试图将这段代码重构为允许1,但遇到问题

/** @var Collection $collection */
    $collection = $model->relation()->whereIn('MY_ID', [
        RelationModel::IDENTIFIER_FOO,
        RelationModel::IDENTIFIER_BAR,
        // ...
    ])->get();
    if (0 === $collection->count()) {
        throw new \InvalidArgumentException('no entry found but mandatory');
}

我尝试更改为此:

/** @var Collection $collection */
    // note the missing parentheses
    $collection = $model->relation->whereIn('MY_ID', [
        RelationModel::IDENTIFIER_FOO,
        RelationModel::IDENTIFIER_BAR,
        // ...
    ])->get();
    if (0 === $collection->count()) {
        throw new \InvalidArgumentException('no entry found but mandatory');
}

但是现在我得到了错误

  

类型错误:函数Illuminate \ Support \ Collection :: get()的参数太少,已传递0

似乎省略了括号,返回了另一种类型的集合,该集合需要传递一个参数,而不是其他类型的集合。

是否可以将其重构为允许两种请求,无论是否具有数据库访问权限?

0 个答案:

没有答案