laravel - Laravel - 使用 where 时 Eloquent 覆盖 get 方法
问题描述
我在我的一个模型中覆盖了 eloquentget()
方法OrderStatus
public static function get()
{
return "hit";
}
当我在没有正常工作的情况下调用它时
>>> $order_statuses = OrderStatus::get();
=> "hit"
但是当我用它调用它时,where
它再次使用parent
get 方法:
>>> $order_statuses = OrderStatus::where('order_id', 24)->get();
=> Wilgucki\Csv\CsvCollection {#4434
all: [],
}
有没有办法覆盖它?
解决方案
您可以通过覆盖get()
查询构建器中的方法来做到这一点,此中型帖子\Illuminate\Database\Query\Builder
中提供了此覆盖的示例。但是在您的情况下,您似乎只想在对模型使用时才覆盖它。OrderStatuses
好消息是Builder
该类引用了该表:
/**
* The table which the query is targeting.
*
* @var string
*/
public $from;
它设置在这里:
/**
* Set the table which the query is targeting.
*
* @param string $table
* @return $this
*/
public function from($table)
{
$this->from = $table;
return $this;
}
所以你可以做这样的事情:
namespace App\Override;
class QueryBuilder extends \Illuminate\Database\Query\Builder {
//@Override
public function get($columns = ['*']) {
if ($this->from == 'OrderStatus') {
// customize the call
} else {
//Return default
return parent::get($columns);
}
}
}
推荐阅读
- reactjs - 是否可以更改 useEffect 挂钩中的状态变量?
- dart - dart:从列表中访问函数
- azure - Azure 可用区 ARM A 参数语法
- json - 邮递员:发送带有查询字符串的 POST 请求
- javascript - Docker-compose 不会将本地文件夹中的测试文件复制到 Container 中,而是复制其他所有内容
- kotlin - 我可以在 Kotlin 脚本中使用 kotlinx 类吗?
- javascript - 反应如何使有条件渲染的导航持续存在
- python - 我在pycharm中执行面部识别代码时出现错误,也尝试在终端上执行它
- spring - Spring boot - sortBy(可分页)内的减法
- regex - Vercel.json 重定向正则表达式以匹配除文件之外的任何内容