首页 > 解决方案 > 何时调用 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() 方法何时被调用?

标签: phplaraveleloquent

解决方案


boot方法名在 Laravel 的最后一个版本中被更改为( booted) 7.x,所以请注意这一点,否则将无法正常工作。

请记住始终在文档中设置您正在使用的 Laravel 版本(在右上角有一个下拉菜单,您可以在其中选择版本)


推荐阅读