这是非常简单的,因为它是最基础的东西,但我不知道我错过了返回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