php - 何时调用 Eloquent 模型的 booted() 方法?
问题描述
我正在尝试添加一个简单的基于闭包的全局查询范围:
// Order.php
protected static function booted()
{
dd('here');
static::addGlobalScope('test', function ($query) {
$query->where('amount', '>', 50);
});
}
但是,当我执行时,Order::toSql()
只生成了这个 SQL 语句:"select * from "orders""
,而不是我在全局查询范围中添加的附加约束。
此外,有史以来最强大的调试工具(dd()
语句)没有被执行,这可能表明引导的方法没有被调用。
那么我做错了什么?我完全按照文档所说的做了。booted() 方法何时被调用?
解决方案
boot
方法名在 Laravel 的最后一个版本中被更改为( booted
) 7.x
,所以请注意这一点,否则将无法正常工作。
请记住始终在文档中设置您正在使用的 Laravel 版本(在右上角有一个下拉菜单,您可以在其中选择版本)
推荐阅读
- html - 如何在ul li HTML中将文本与img对齐
- r - dplyr 汇总操作的顺序影响输出
- powershell - 如何更改脚本以按文件名而不是发件人姓名保存附件?
- android - 如何修复“react-native run-android”启动错误“重置为无效标记”
- python - 如何找到两个日期之间的中位数月份?
- r - 如何在 substr 中使用反应值?
- javascript - 如何用 html 元素替换文本以显示粗体、下划线等?
- php - 机器人在错误的频道中回复 app_mention 事件
- arrays - 如何从 Firebase 数据库中获取图像路径以显示在我的 CollectionView 中?
- html - DOMPDF 0.8.1 固定页眉和页脚不显示在第一页