类在Laravel Eloquent查询中触发__construct?

时间:2018-03-15 18:59:44

标签: php laravel eloquent

当我做这样的事情时,

$user = User::where('id', 1)->get()`;

构造函数触发。有没有办法避免这种情况?

我只想在使用像$user = new User();这样的新关键字时使用__contruct函数

1 个答案:

答案 0 :(得分:2)

你的例子与Laravel在场景背后的表现非常相似。当您执行User :: find()时,您实际上是在要求一个新实例,即Collection的实例或QueryBuilder。

// Illuminate\Database\Eloquent\Model

public static function find($id, $columns = array('*'))
{
    if (is_array($id) && empty($id)) return new Collection;

    $instance = new static;

    return $instance->newQuery()->find($id, $columns);
}

你应该使用听众。