php 当我创建模型时,我如何访问Illuminate\Database\Eloquent\Builder的find()?

6qftjkof  于 11个月前  发布在  PHP
关注(0)|答案(2)|浏览(89)

我注意到,在web.php中,我能够访问Listing模型的find()(我创建的)

Route::get('listings/{id}',function($id){
return view('listing',[
    'listing'=>Listing::find($id)
]); });

字符串
当我检查Listing模型时,我发现它扩展了Illuminate\Database\Eloquent\Model类。但是我找不到find()。在进一步的检查中,我发现上面提到的find()Illuminate\Database\Eloquent\Builder类的一部分。问题是,我的Listing模型如何能够访问Illuminate\Database\Eloquent\Builder,或者它是否通过Illuminate\Database\Eloquent\Model发生,如果是,如何?

t40tm48m

t40tm48m1#

Laravel使用一些“魔法”的方式来做这样的事情。你可以通过在find方法中强制一个Exception来看到它的方式,如下所示:

try {
        Model::findOrFail('aa');
    } catch (\Exception $e) {
        Log::error($e);
    }

字符串
这将显示代码的路径
它看起来像这样:

Stack trace:
#0 /var/www/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\Database\Eloquent\Builder->findOrFail('aa')
#1 /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2335): Illuminate\Database\Eloquent\Model->forwardCallTo(Object(Illuminate\Database\Eloquent\Builder), 'findOrFail', Array)
#2 /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2347): Illuminate\Database\Eloquent\Model->__call('findOrFail', Array)
#3 /var/www/app/Http/Controllers/Management/Controller.php(68): Illuminate\Database\Eloquent\Model::__callStatic('findOrFail', Array)
#4 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\Http\Controllers\Controller->method()

hpxqektj

hpxqektj2#

如果您想查看所有查询生成器方法都使用查询方法。下面是一个示例,如果您有一个用户模型,并希望通过id查找用户

$user = User::query()->find($id);

字符串
对我来说,我的代码编辑器是Php storm,当我单击find方法时,它会将我转发到Builder类

Illuminate\Database\Eloquent\Builder


您将获得该类中的所有数据库查询生成器方法

相关问题