gpt4 book ai didi

laravel - Laravel 中的 newQuery()

转载 作者:行者123 更新时间:2023-12-04 12:45:59 30 4
gpt4 key购买 nike

这样做有什么区别:

$model = User::newQuery();
$model->published(1);
$model->get();

和:
$model = User;
$model = $model->published(1);
$model = $model->get();

我知道在第二个示例中,您必须将回调分配给模型。但是这些有什么区别吗?

请注意,我没有链接,因为在检查它是否应该发布等之间会有一些条件。

最佳答案

这取决于published() 是什么。稍微改变你的代码:

$model = User::newQuery();
$model->where('published', 1);
$model->get();

或者
$model = new User;
$model = $model->where('published', 1);
$model = $model->get();

正在做
Route::get('debug/model', function () {
$model = new App\Data\Entities\User;

$model = $model->with('gender');
$model = $model->where('username', 'gigante');
$model = $model->get();

dd($model);
});

我有

enter image description here

不同的是,一旦实例化,你就必须做 $model = $model->whatever() ,因为 laravel 正在返回一个 QueryBuild 的实例,而你现在有一个 Eloquent 的实例。

所以,没什么不同,因为当 Laravel 无法在模型中执行你需要的东西时,它会直接进入 QueryBuilder,通过执行 newQuery(),所以你的代码基本上是一样的。

回到你的代码,
$model->published(1);

如果 Model 没有找到那个方法,那么它会尝试 newQuery(),所以,也许吧。

关于laravel - Laravel 中的 newQuery(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40932411/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com