Laravel 5 获取使用 slug 选择的记录的 id 的简单方法

Laravel 5 Easy way to get the id of the record selected with a slug

我正在尝试找到一种简单的方法来获取记录的 ID(使用 slug 选择),以便我可以使用它来查询该记录的 children(parent/child 相关) .

$product = Products::where('url','the-slug')->get();

现在我可以使用集合来获取 id 并继续查询 children。

有更简单的方法吗?

还有...

我可以单独通过 slug 查询 children 吗?

$productId = Products::where('url', 'the-slug')->first()->id;

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

$productId = Products::where('url', 'the-slug')->pluck('id');

pluck() 的优点是如果没有找到产品它会 return nullfirst()->id 会产生错误因为 first() returns null 并且您无法访问非对象的 属性。


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

$productId = Products::where('url', 'the-slug')->firstOrFail()->id;

当然你也可以自己检查:

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

此功能为您提供您正在寻找的产品...

function findByProductId() {
    $productId = Products::where('url', 'the-slug')
                           ->pluck('id');
}
return $productId;