我正在制作我的第一个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);
答案 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。
将变量传递给视图的方式也不正确。尝试使用$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');
。