FeesApplies::find(2)->toSql();
回報這個查詢
select * from `fees_applies`
爲什麼它忽略ID?
表中的主鍵是可以的。 當我寫
FeesApplies::where('id',2);
它工作正常
FeesApplies::find(2)->toSql();
回報這個查詢
select * from `fees_applies`
爲什麼它忽略ID?
表中的主鍵是可以的。 當我寫
FeesApplies::where('id',2);
它工作正常
是它返回錯誤的結果,或者是SQL查詢錯了嗎? 要查看查詢跑去嘗試
DB::enableQueryLog();
FeesApplies::find(2);
dd(DB::getQueryLog());
它回調錯誤的結果(表中的第一行) –
find()返回帶有這個id的記錄,如果你缺少一個id爲1的記錄,這可能是第一條記錄。 –
我有這個ID記錄,但它仍然返回錯誤的結果。但是當我添加「使用數據庫」時在我的模型中,它的正確性。謝謝您的回答 –
當使用Model::where('id', $value)
語法中,where
方法將返回Illuminate\Database\Eloquent\Builder
類型的對象。當使用語法Model::find($value)
時,find
方法將返回一個Eloquent模型的實例。模型本身可以用來查詢數據庫,但是當試圖直接將Eloquent實例轉換爲SQL而不添加任何其他條件(或使用返回對象的方法)時,實例將默認選擇沒有任何條件的所有記錄。下面的腳本可以幫助流下了一點光對什麼是真正打算在您的情況:
// $fees1 will be an instance of Illuminate\Database\Eloquent\Model
$fees1 = FeesApplies::find(2);
// Asking the model instance to convert itself to SQL without any conditions
var_dump($fees1->toSql());
// Asking the model instance to retrieve a Builder object with a single condition
var_dump($fees1->where('id', 2)->toSql());
問模型實例查詢數據庫,又是一個全新的查詢,而不是「建設」你以前用來實際檢索實例的那個。
'FeesApplies :: find(2)'實際返回錯誤的結果嗎?你對'toSql'在這種特殊情況下的工作原理有誤解,所以我試圖弄清楚是否存在真正的問題或只是混淆。 – ceejayoz
如果它*會給你錯誤的結果,請打印出'FeesApplies :: find(2) - > toJson()',看看有什麼被抓取。 – ceejayoz
我試圖理解爲什麼find(id)返回錯誤的結果(當我在我的模型中添加「_use DB; _」時,它工作正常) –