2016-09-29 79 views
1

我有,當我檢查的問題,如果集合爲空或不是,Laravel給我的錯誤調用未定義功能Laravel

「調用未定義的方法 照亮\數據庫\查詢\生成器::的isEmpty( )」。

芹苴它在其他控制器的工作,但是當控制器處於子文件夾中突然停止工作。

這裏是我的代碼:

$group = UserGroup::where('id', $request->group_id)->first(); 
    if($group->isEmpty()){ // I get error from here 
     return redirect()->back(); 
    } 
+0

沒有定義功能,u需要檢查它'的var_dump($組);' – devpro

+0

我得到相同的 - >查找() 的isEmpty()被描述爲返回true或false,不產生錯誤。 它可能從5.2中的Eloquent中移除了嗎? – Mladen

回答

0

一個在PHP調試的最流行的方式仍然是相同的 - 在瀏覽器中顯示的變量,希望能找出錯誤是什麼。 Laravel具有顯示變量的特定短助手功能 - dd() - 代表「Dump and Die」,但它並不總是方便。什麼是其他選項?

注意下面提到的方法是尋找到我們班的失敗,什麼都可用我們的查詢執行後的情況。打印之前我們的預期結果是什麼。此方法是根據is要求找出錯誤的最佳方法。

首先,dd()有什麼問題?好吧,讓我們說,我們想從數據庫表中的所有行和甩掉他們:

$methods = PaymentMethod::all(); 
dd($methods); 

我們會看到這樣的:

enter image description here

但你明白了吧 - 看到的實際值,我們需要再點擊三次,如果沒有這些操作,我們看不到完整的結果。起初我想 - 也許dd()函數有一些參數呢?不幸的是,因此,讓我們來看看其他的選擇:

的var_dump()和死亡():

$methods = PaymentMethod::all(); 
var_dump($methods); 
die(); 

我們現在看到的:表現出任何類型的數據的

好老PHP方式

enter image description here

但還有更多可讀的方式。

另一個PHP內置函數print_r()對我們一個完美的描述:

$methods = PaymentMethod::all(); 
print_r($methods); 
die(); 

然後去查看瀏覽器的源代碼「打印關於變量人類可讀的信息」 ...我們得到這樣的:

現在

enter image description here

,我們可以很容易地閱讀的內容,並嘗試進行調查錯誤。

此外,print_r()函數有另一個可選參數與真/假值 - 你不能只回應該變量,但將其作爲字符串返回到另一個變量。然後,您可以將多個變量合併爲一個,例如可能將其記錄在某處。

所以,在這樣的情況下,dd()不是那麼方便 - PHP原生函數來解救。但是,如果你想讓腳本從字面上「轉儲一個簡單的變量並且死掉」 - 然後dd($var) is probably the fastest to type