2017-10-05 122 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