2017-10-05 95 views
0

不同的结果我已经了解如何为一个非常简单的事情的作品laravel一个非常大的疑问:laravel ORM:从几乎相同的查询

如果我称之为:

$companies=User::All(); 

那么我可以用类似的语句这在forach

foreach($companies as $company) 
$company['new_field']= 'something'; 

,如果我像限制查询的输出:

$companies = DB::table('companies') 
      ->select('id','name','email','business_name',...)->get(); 

的事情,之前不工作,

  • 我尝试带或不带->get()
  • 我尝试用->toArray()转换(误差惜售)
  • 我尝试用put() and push()的收藏方法和agains错误...

如何在集合的每个项目中添加一个字段,然后将其传递给视图?

+0

我不会的认为用户模式使用企业表中,除非它是被改变了..如果是的话,它不应该被称为用户 – Dale

+0

是的模型是自定义的!一切都好! – JahStation

+0

是否想在其中使用自定义属性 –

回答

2

尝试这样的,希望它为你的作品:

$users=User::select('id','name','email','business_name',...)->get()->toArray(); 

,然后使用foreach循环是这样的:

foreach($users as $key => $value){ 
    $users[$key]['newField'] = "Demo"; 
} 
+0

什么是$ key => $ value的值? – JahStation

+0

如果即时通讯使用选择为你描述​​没有toArray部分我可以通过访问$ company ['new_fiel'] =东西来添加一个像simpli之前的字段! – JahStation

+0

@JahStation你可以删除'$ key => $ value'部分。这是我的惯例。 –

1

如果你在它使用Laravel和型号,以便有更好的方式来添加自定义属性或字段这里是我的自定义字段

做例如:

有一个型号名称用户 因此在用户模型 添加属性名称追加像:

class User extends Model 
{ 
    protected $appends = ['new_field']; 

    public function getNewFieldAttribute() // defining field logic here 
    { 
     return // your code 
    } 

所以你没有必要使用的foreach和循环和增加新的领域

更多的有旁观laravel DOC:https://laravel.com/docs/5.5/eloquent-mutators#accessors-and-mutators

建议

你也可以用Model来限制你的输出。

User::select('id','name','email','business_name',...)->get(); 

如果你正在像

User::select('id','name','email','business_name',...)->get()->toArray(); 

数组所以这也将让您自定义字段

+0

谢谢我见过这种方法,但我需要更多的快捷方式来传递一个对象事物封装在一个集合中,并且该字段依赖于另一个查询... – JahStation