這是非常簡單的,因爲它是最基礎的東西,但我不知道我錯過了返回NULL:Laravel雄辯:: find()方法與現有的ID
有一個叫做模型Site
我使用的是口才ORM,所以當我打電話(在控制器)
$oSite = Site::find(1)
然後
var_dump($oSite);
它返回值NULL
。
但是,當我檢查數據庫,表中 '網站' 實際上包含以下項目:
id: 1
user_id: 1
name: test
在我Site
模式我有以下代碼:
use Illuminate\Database\Eloquent\ModelNotFoundException;
Class Site extends Eloquent {
protected $table = 'sites';
protected $fillable = array ('user_id', 'name');
}
相反,如果我收集以下項目:
$oSite = DB::table('sites')
->where('id', 1)
->first();
它的工作原理和我得到正確的註冊。
我在做什麼錯了?我沒有收到哪份文件?
編輯:
型號代碼可以在上面進行檢查。
控制器:
use Illuminate\Support\Facades\Redirect;
class SiteManagementController extends BaseController {
...
public function deleteSite()
{
if (Request::ajax())
{
$iSiteToDelete = Input::get('siteId');
$oSite = Site::find($iSiteToDelete);
return var_dump($oSite);
}
else
{
return false;
}
}
}
編輯2:(解決)
真正原因是行不通的:
我在我的模型代碼有原本如下:
use Illuminate\Database\Eloquent\SoftDeletingTrait;
use Illuminate\Database\Eloquent\ModelNotFoundException;
Class Site extends Eloquent {
protected $table = 'sites';
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
protected $fillable = array('user_id', 'name');
}
問題是我在啓動項目後添加了一個'deleted_at
'列,當我申請遷移時,我沒有啓用softdeleting。 顯然,我做了第二個錯誤,忘記啓用'deleted_at
'爲空,因此所有的插入都有錯誤的時間戳(0000-00-00 ...)。
修復:
可爲空 '
deleted_at
' 列。將所有錯誤的'
deleted_at
'時間戳設置爲NULL
。
顯示模型和控制方法來代替。 – 2014-10-01 11:09:14
@JarekTkaczyk編輯後添加了Contoller方法。模型'網站'在上面。 – zedee 2014-10-01 11:20:26
@JarekTkaczyk自己解決。問題來源與數據庫相關。 – zedee 2014-10-01 13:20:32