行うことの違いは何ですか:
$model = User::newQuery();
$model->published(1);
$model->get();
そして:
$model = User;
$model = $model->published(1);
$model = $model->get();
2番目の例では、コールバックをモデルに割り当てる必要があることを知っています。しかし、これらに何か違いはありますか?
公開すべきかどうかの確認などの間にいくつかの条件があるため、私は連鎖していません。
それは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);
});
_
私は得た
違いは、インスタンス化したら、$model = $model->whatever()
を実行する必要があることです。これは、laravelがQueryBuildのインスタンスを返し、Eloquentのインスタンスがあるためです。
したがって、大した違いはありません。Laravelがモデルで必要なものを実行できない場合、newQuery()を実行することで、QueryBuilderに直接送信されるため、コードは基本的に同じ。
コードに戻って、
_$model->published(1);
_
Modelがそのメソッドを見つけられない場合は、newQuery()を試行します。