如何从类对象获取数据库字段

时间:2018-09-16 14:24:51

标签: laravel object model

我执行此更新语句,效果很好。

$g = Group::where([['id', $idgroup], ['admin', $currentUser]]);
$g->update(['admin' => $iduser]);

此语句后,我需要来自Group对象的字段名称。但是,使用以下语句,我得到了Undefined属性:Illuminate \ Database \ Eloquent \ Builder :: $ name。

$groupname = $g->name; 

组是我的模型(数据库表),其中包含字段ID,名称,admin。如何从该对象获取字段名称?

谢谢

3 个答案:

答案 0 :(得分:0)

没有查找器,它将返回一个查询生成器,但是当您需要获取模型实例时,请在其上应用get(对于模型Collection)或first(对于单个模型实例)查询生成器。对于您的情况,您需要像这样调用first()方法

$g = Group::where([['id', $idgroup], ['admin', $currentUser]])->first();
$g->update(['admin' => $iduser]);

那你就可以做

$groupname = $g->name; 

您可以在此处查看retrieving model的详细信息

答案 1 :(得分:0)

如果要从数据库中获取一条记录,请使用first()

$g = Group::where([['id', $idgroup], ['admin', $currentUser]])->first();

$g->name; //it will output name

或 如果要从数据库获取所有记录,请使用get()

$groups = Group::where([['id', $idgroup], ['admin', $currentUser]])->get();

要从此处获取名称,您将必须运行循环,因为get()将返回一个集合

foreach($groups as $g){
   $g->name; //it will give name 
}

答案 2 :(得分:0)

您的$ g变量是一个Illuminate \ Database \ Eloquent \ Builder,它代表一个查询,而不是单个对象,这意味着它不具有Group属性。 $ g下很可能有多个记录,您有两个选项可检索所有这样的名称字段

$g->pluck('name')

这将为您提供所有名称的集合,或者,如果您确定只有一个对象,则可以执行$ g-> first()-> name,它将为您提供第一个对象的名称(如果您确定只有一个对象则只有一个)