pan*_*hro 7 laravel laravel-5 laravel-5.3
这样做的区别是什么:
$model = User::newQuery();
$model->published(1);
$model->get();
Run Code Online (Sandbox Code Playgroud)
和:
$model = User;
$model = $model->published(1);
$model = $model->get();
Run Code Online (Sandbox Code Playgroud)
我知道第二个例子你必须将回调分配给模型.但这些有什么不同吗?
请注意,我没有链接,因为在检查是否应该发布之间会有一些条件等.
这取决于published() 是什么。稍微改变一下你的代码:
$model = User::newQuery();
$model->where('published', 1);
$model->get();
Run Code Online (Sandbox Code Playgroud)
或者
$model = new User;
$model = $model->where('published', 1);
$model = $model->get();
Run Code Online (Sandbox Code Playgroud)
正在做
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);
});
Run Code Online (Sandbox Code Playgroud)
我有
不同之处在于,一旦实例化,您就必须执行$model = $model->whatever(),因为 laravel 返回 QueryBuild 的实例,而您现在拥有 Eloquent 的实例。
所以,没有太大区别,因为当 Laravel 无法执行模型中所需的内容时,它会通过执行 newQuery() 直接进入 QueryBuilder,因此您的代码执行的操作基本相同。
回到你的代码,
$model->published(1);
Run Code Online (Sandbox Code Playgroud)
如果 Model 没有找到该方法,那么它会尝试 newQuery(),所以,也许吧。
| 归档时间: |
|
| 查看次数: |
9032 次 |
| 最近记录: |