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 null
而 first()->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;
我正在尝试找到一种简单的方法来获取记录的 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 null
而 first()->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;