2014-10-01 77 views
8

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

修复:

  1. 可为空 'deleted_at' 列。

  2. 将所有错误的'deleted_at'时间戳设置为NULL

+0

显示模型和控制方法来代替。 – 2014-10-01 11:09:14

+0

@JarekTkaczyk编辑后添加了Contoller方法。模型'网站'在上面。 – zedee 2014-10-01 11:20:26

+0

@JarekTkaczyk自己解决。问题来源与数据库相关。 – zedee 2014-10-01 13:20:32

回答

1

检查您是否正确获得Input::get('siteId')。如果你得到它然后尝试将其转换为整数,例如

$iSiteToDelete = intval(Input::get('siteId')); 
+0

是的,在var_dumping Input :: get('siteId')之后,我得到了正确的值。 – zedee 2014-10-01 11:27:03

+0

你在var_dump中获得整数值吗? – 2014-10-01 11:29:12

+0

[链接](http://stackoverflow.com/questions/15326140/laravel-eloquent-find-returning-null)请检查这个链接 – 2014-10-01 11:31:39

1

你没有返回你的模型。

var_dump打印输出并不返回任何内容。

做到这一点,而不是:

dd($oSite); // stands for var_dump and die - a helper method 

,甚至更好,简单地返回模型:

return $oSite; // will be cast to JSON string