3 回答

TA貢獻1835條經驗 獲得超7個贊
我認為這是多余的。$ Patient-> records是一個集合。我這樣使用。
if($patient->records->count())
{
// has records
}

TA貢獻2021條經驗 獲得超8個贊
如果可能無法定義empty($patient->records)
$ Patient或記錄(假定為$ Patient的屬性),則這很有用,因為$ Patient-> records-> count()本身會導致致命錯誤: Uncaught Error: Call to a member function count() on null in ...
隨著empty($patient->records)
在if語句,可避免致命的錯誤,甚至在情況$患者或記錄是不明確的。
空值表示檢查$ Patient-> records是否已定義,而不是空值,而子句的count()部分是對count方法結果的更具體的檢查。在$病人或記錄未定義的情況下,該方法不可用。

TA貢獻1864條經驗 獲得超6個贊
是的,這是多余的。
那么,為什么有人可以用這種方式編寫代碼?
可能是,在檢查集合的長度之前,他想確保它不是,null
盡管在這種情況下我不喜歡使用is_null()
orisset()
方法。即使他腦子里有(一點都不安全)的想法,還是沒有必要的。因為如果之間的關系patient
和records
正確定義(一對多=> hasMany()
),那么$patient->records
總是會返回一個集合但不能為null。即使它是一個空集合,您仍然可以count()
安全地使用方法,而無需檢查as是否records
為null,因為如果我們返回一個hasMany()
關系,它永遠不會為null 。
有什么更好的解決方案
您可以使用相同的條件刪除空的檢查部分,如下所示:
if($patient->records->count() > 0)
為了使它更具可讀性,Laravel集合為我們提供了一個非常好的方法,稱為isNotEmpty()
:
if($patient->records->isNotEmpty())
這是我更喜歡使用的。因為我們編寫代碼是為了使其他程序員(而非計算機)可以讀取。計算機甚至可以理解二進制,但我們不會編寫二進制。
- 3 回答
- 0 關注
- 168 瀏覽
添加回答
舉報