我如何获得updated_at和created_at

时间:2013-10-01 16:19:36

标签: laravel laravel-4

我正在制作我的第一个Larevel(4)应用程序,我想显示它的创建日期,我遇到了这个问题:Unexpected data found. Unexpected data found. Unexpected data found. Data missing

当我尝试在我的刀片模板中执行此操作时

@extends('layout')

@section('content')
    <h3>Name: {{ $user->name }}</h3>
    <p>Email: {{ $user->email }}</p>
    <p>Bio: {{ $user->bio }}</p>
@endsection()
@section('sidebar')
  <p><small>{{ $user->created_at }}</small></p>
@endsection()
@stop

和我的控制器

<?php 
class UserController extends BaseController 
{
  public $restfull = true;

  public function get_index() {
    //$users = User::all();// gets them in the order of the database
    $users = User::orderBy("name")->get(); // gets alphabetic by name
    $v = View::make('users');
    $v->users = $users;
    $v->title = "list of users";
    return $v;
  }

  public function get_view($id) {
    $user = User::find($id);
    $v = View::make('user');
    $v->user = $user;
    $v->title = "Viewing " . $user->name;
    return $v;
  }

} 
?>

我一拿出就行了:

<p><small>{{ $user->created_at }}</small></p>" 

如何访问这些值的任何想法,我检查了它们,并且它们存在于我的表中。

这是我的表的架构

CREATE TABLE "users" ("id" integer null primary key autoincrement, "email" varchar null, "name" varchar null, "bio" varchar null, "created_at" datetime null, "updated_at" datetime null);

2 个答案:

答案 0 :(得分:2)

所以这就是我所做的修复它。

在迁移中我这样做了:

class CreateTable extends Migration {

    public function up()
    {
        Schema::create('users', function($table) {
            $table->string('name');
            $table->timestamps();
        });
    }

/* also need function down()*/

我在migrations中添加了这样的插入来添加一些用户。

  class AddRows extends Migration {

  /* BAD: this does NOT! update the timestamps */ 

  public function up()
  {
     DB::table('users')->insert( array('name' => 'Person') );
  }

  /* GOOD: this auto updates the timestamps  */ 
  public function up()
  {
      $user = new User;

      $user->name = "Jhon Doe";

      $user->save();
    }
  }

现在,当您尝试使用{{ $user->updated_at }}{{ $user->created_at }}时,它会起作用! (假设您将$ user传递给视图)

答案 1 :(得分:1)

这里有一些事情应该修复。由于这是一个安静的控制器,Laravel希望你的函数名是camelCase而不是snake_case。

将变量传递给视图的方式也不正确。尝试使用$usersreturn View::make('users')->with('users',$users);变量传递给视图。

另一件事是您将一组用户传递给视图,这意味着您不仅能够回显用户信息。要从集合中获取用户信息,必须使用循环遍历集合。 (如果您有多个用户,您的应用可能会再次中断)

foreach($users as $user)
{
     echo $user->name;
     echo $user->email;
     echo $user->bio;
}

由于您的侧边栏和内容部分显示用户信息的方式,您实际想要为用户提供的内容与$user = User::find(Auth::user()->id);类似,这意味着它将返回一个用户并且您将能够失去循环。

我刚看到的另一件事。如果你正在设置一个安静的控制器,那么正确的属性是public $restful = true;,虽然我不确定它是否已经被实际使用了,因为你基本上是在routes.php中设置了Route::controller('user', 'UserController');