3

我正在制作我的第一个 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);

4

2 回答 2

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 传递给视图)

于 2013-10-01T17:39:47.040 回答
1

这里发生的一些事情可能应该被修复。由于这是一个 restful 控制器,Laravel 期望你的函数名是 camelCase 而不是 snake_case。

您将变量传递给视图的方式也不正确。尝试使用 将$users变量传递给视图return 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');.

于 2013-10-01T17:30:45.983 回答