Laravel Eloquent::Find() returning NULL with an existing ID(Laravel Eloquent::Find() 使用现有 ID 返回 NULL)
问题描述
它非常简单,因为它是最基本的东西,但我不知道我错过了什么:
It's pretty straightforward as it's the most basic thing but I don't know what I'm missing:
有一个名为 Site
我正在使用 Eloquent ORM,所以当我调用(在控制器中)
I'm using Eloquent ORM, so when I call (in a controller)
$oSite = Site::find(1)
然后
var_dump($oSite);
它返回一个 NULL
的值.
但是当我检查数据库时,表sites"实际上包含以下项目:
But when I check the database, the table 'sites' actually contains the following item:
id: 1
user_id: 1
name: test
在我的 Site
model 中,我有以下代码:
In my Site
model I have the following code:
use IlluminateDatabaseEloquentModelNotFoundException;
Class Site extends Eloquent {
protected $table = 'sites';
protected $fillable = ['user_id', 'name'];
}
相反,如果我使用以下内容收集项目:
Instead, if I gather the item with the following:
$oSite = DB::table('sites')
->where('id', 1)
->first();
它有效并且我得到了正确的寄存器.
It works and I get the correct register.
我做错了什么?我没有得到文档的哪一部分?
What I'm doing wrong? Which part of the documentation I didn't get?
型号代码可以在上面查看.
Model code can be checked above.
控制器:
use IlluminateSupportFacadesRedirect;
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 IlluminateDatabaseEloquentSoftDeletingTrait;
use IlluminateDatabaseEloquentModelNotFoundException;
Class Site extends Eloquent {
protected $table = 'sites';
use SoftDeletingTrait;
protected $dates = ['deleted_at'];
protected $fillable = ['user_id', 'name'];
}
问题是我在启动项目后添加了一个deleted_at
"列,当我应用迁移时,我没有启用软删除.显然,我犯了第二个错误,忘记启用 'deleted_at
' 为可空,因此所有插入的时间戳都错误(0000-00-00 ...).
Problem was I added a 'deleted_at
' column after I started the project and when I applied migrations, I didn't have softdeleting enabled.
Obviously, I did a second error, forgetting to enable 'deleted_at
' to be nullable, hence all inserts went had a wrong timestamp (0000-00-00 ...).
修复:
使
deleted_at
"列可以为空.
将所有错误的 'deleted_at
' 时间戳设置为 NULL
.
Set all wrong 'deleted_at
' timestamps to NULL
.
推荐答案
检查您是否正确获取了 Input::get('siteId')
.如果您得到它,请尝试将其转换为整数,即
Check you are getting Input::get('siteId')
correctly. if you are getting it then try to convert it into integer i.e
$iSiteToDelete = intval(Input::get('siteId'));
这篇关于Laravel Eloquent::Find() 使用现有 ID 返回 NULL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Laravel Eloquent::Find() 使用现有 ID 返回 NULL


- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01