从数据库Laravel获取数据

问题描述:

我试着去得到使用的代码数据库中的数据(在我的控制器)从数据库Laravel获取数据

public function viewStock() 
    { 
     $stocks = Stocks::where('ID', '=', 2); 
     if($stocks->count()) 
     { 
      $stocks = $stocks->first(); 
      return View::make('trucks') 
       ->with('stocks', $stocks); 
     } 

    } 

出于某种原因,经过与IF语句然后输出我的输出页面上NULL哪些包含代码:

@extends('layout.main') 
@section('content') 
<p>{{ var_dump($stocks->stockcontent) }}</p> 
@stop 

我想它没有计算任何东西,因为它返回NULL,但它仍然通过if语句?

编辑
当我使用var_dump($stocks) 它打印:http://i.imgur.com/RbvbNdr.png

+0

你试过倾销'股票'吗?为什么你有'股票::其中('ID','=',2)'和'股票 - >第一()','ID'不是主键? – 2014-11-23 21:35:11

+0

是的,它是一个主键,如果我不把$股票 - >第一()在它给出这个错误:http://i.imgur.com/Sbv4CSU.png,我也试过其他列。 – Batzz 2014-11-23 21:38:00

+0

是的,你需要更优雅地使用口才 - '$ stock = Stocks :: findOrFail(2)'会做你想做的事情。如果您想手动检查它包含的内容,可以执行'$ stock = Stocks :: find(2)'并检查它包含的内容。此外,我建议你安装laralvel调试栏,这样你可以看到什么是在你的查询返回甚至转储数据会话,看看发生了什么。 – 2014-11-23 21:43:16

那是因为你从来没有发出查询。所以,当你做$stocks->count(),你实际上发送COUNT()作为你的SELECT条款。这是你应该怎么做:

public function viewStock() { 
    try { 
     $stocks = Stocks::findOrFail(2); 

     return View::make('trucks') 
        ->with('stocks', $stocks); 
    } catch (ModelNotFoundException $e) { 
     // Handle model not found 
    } 
} 

伊夫固定它,我不知道是否有解决它,但我的修正,是因为当我第一次插入数据到DATABSE我没有默认的任何其他方式created_at和updated_at是laravel生成的,当我使用脚本将一些数据放入其中时,会自动添加这些字段,并且每当我尝试打印已填充created_at和updated_at的数据时,它都会工作。