gpt4 book ai didi

Laravel 访问模型属性

转载 作者:行者123 更新时间:2023-12-02 14:12:25 25 4
gpt4 key购买 nike

我正在寻找如何通过“别名”字段访问 Eloquent 模型项目的解决方案。通过“id”访问项目没有问题。但是构建自定义查询时我发现自己无法访问项目属性。

这段代码完美运行

$cat = Category::find(1);
return $cat->title;

但是如果我使用任何其他参数查询项目 - 属性将无法访问

这段代码

$cat = Category::where('alias','=','vodosnab')->get();
return $cat->title;

抛出异常

Undefined property: Illuminate\Database\Eloquent\Collection::$title

你能帮忙吗?

最佳答案

你已经得到了答案,但这里有一些见解,当你使用 get()all() 时,它返回一个模型对象的集合,这是一个Illuminate\Database\Eloquent\Collection 的实例,因此在这里您将获得一个 Collection 对象

$cat = Category::where('alias','=','vodosnab')->get();

现在,您可以使用 $cat->first() 从集合中获取第一项(类别模型),您也可以使用 $cat->last() 获取最后一项,或 $cat->get(1) 获取集合中的第二项。这些方法在 Collection 对象中可用。

使用 first() 方法,例如 Category::where('alias','=','vodosnab')->first(); 将返回您只有一个(第一个数学项)模型,它是您的 Category 模型的实例。因此,使用 all()get() 获取模型对象的集合,您可以循环访问该集合,如下所示:

foreach(Category::all() as $cat) { // or Category::get()
$cat->propertyName;
}

或者您可以使用:

$categories = Category::where('alias','=','vodosnab')->get();
foreach($categories as $category) {
$category->propertyName;
}

此外,您还可以使用:

$categories = Category::where('alias','=','vodosnab')->get();
$firstModel = $categories->first();
$lastModel = $categories->last();
$thirdModel = $categories->get(2); // 0 is first

如果你只需要获取一个那么你可以直接使用:

$category = Category::where('alias','=','vodosnab')->first();
$category->fieldname;

请记住,如果您使用 get(),即使数据库中只有一条可用记录,您也会获得 Model 对象的集合。因此,在您的示例中:

$cat = Category::where('alias','=','vodosnab')->get();
return $cat->title;

您正在尝试从 Collection 对象获取属性,如果您愿意,可以使用:

$cat = Category::where('alias','=','vodosnab')->get();
return $cat->first()->title; // first item/Category model's title
return $cat->last()->title; // last item/Category model's title
return $cat->get(0)->title; // first item/Category model's title

您可以阅读this article写在 LaravelCollection 对象上。

关于Laravel 访问模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22157863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com