Laravel 5轻松获取使用slug选择的记录的id

Kla*_*aaz 0 orm laravel eloquent laravel-5

我试图找到一种简单的方法来获取记录的id(用slug选择),这样我就可以用它来查询这条记录的子项(父/子相关).

$product = Products::where('url','the-slug')->get();
Run Code Online (Sandbox Code Playgroud)

现在我可以使用该集合来获取id并继续查询孩子们.

有更简单的方法吗?

和...

我可以单独用slug查询孩子吗?

luk*_*ter 11

而不是first()->id你应该使用pluck()方法:

$productId = Products::where('url', 'the-slug')->pluck('id');
Run Code Online (Sandbox Code Playgroud)

优点pluck()是,如果没有找到产品,它将返回null,但first()->id会产生错误,因为first()返回null并且您无法访问非对象的属性.


作为替代方案,您可以使用在没有符合条件的行时firstOrFail抛出ModelNotFoundException:

$productId = Products::where('url', 'the-slug')->firstOrFail()->id;
Run Code Online (Sandbox Code Playgroud)

您当然也可以自己检查一下:

$product = Products::where('url', 'the-slug')->first();
if($product !== null){
    // product found, proceed
}
Run Code Online (Sandbox Code Playgroud)