是什麼這些方法是什麼()之間找到的差異,findOrFail(),第(),firstOrFail(),獲得(),列表(),指定者()
- 之間找到的差異( )
- findOrFail()
- 第()
- firstOrFail()
- 的get()
- 列表()
- 指定者()
我一直在使用他們,每個人給出了不同的結果,有時我需要在get()
末增加toArray()
因爲我的函數需要一個數組。其他方法不會產生數組嗎?
是什麼這些方法是什麼()之間找到的差異,findOrFail(),第(),firstOrFail(),獲得(),列表(),指定者()
我一直在使用他們,每個人給出了不同的結果,有時我需要在get()
末增加toArray()
因爲我的函數需要一個數組。其他方法不會產生數組嗎?
find($id)
有一個id,並返回一個單一的模式。如果不存在匹配的模型,則返回null
。
findOrFail($id)
需要一個id並返回一個模型。如果不存在匹配的模型,則會引發錯誤。
first()
返回在數據庫中找到的第一條記錄。如果不存在匹配的模型,則返回null
。
firstOrFail()
返回在數據庫中找到的第一條記錄。如果不存在匹配的模型,則會引發錯誤。
get()
返回與查詢匹配的模型集合。
pluck($column)
僅返回給定列中值的集合。在以前的Laravel版本中,這種方法被稱爲lists
。
toArray()
將模型/集合轉換爲簡單的PHP數組。
注:a collection是加強了陣列。它的功能類似於數組,但具有很多附加功能,如您在the docs中所見。
不幸的是,PHP不允許在任何地方使用集合對象來使用數組。例如,在foreach
循環中使用集合是可以的,把它傳遞給array_map
不是。同樣,如果您鍵入提示參數array
,PHP不會讓您傳遞它的集合。較新版本的PHP具有iterable
typehint,可用於接受數組和集合。
如果您想要從集合中獲取普通數組,請調用其all()
方法。
謝謝你的澄清。這裏的東西,我想獲得這樣的職位列表'$ post = Post :: with('user.votes') - > with('subreddit.moderators') - > findOrFail($ post-> id) ;''所以我可以訪問'$ post-> subreddit-> moderators-> user_id',但是它給出了'Undefined property:Illuminate \ Database \ Eloquent \ Collection :: $ user_id' - 我可以訪問'$ post-> subreddit- > moderators',但不是當我添加'user_id'時 - 爲什麼? – Halnex
'subreddit'是一個單一的模型,具有'moderators'屬性。 'moderator'是一個集合,而不是一個模型。您無法直接訪問任何內容。你可以檢查第一個,如果你想:'$ post-> subreddit-> moderators [0] - > user_id' –
查看[Query Builder文檔](http://laravel.com/docs/5.1/queries#retrieving-results)以及[Eloquent API reference](http://laravel.com) /api/5.1/Illuminate/Database/Eloquent/Builder.html)。 –