调用未定义的方法Posts :: newQuery()

时间:2015-02-01 09:54:38

标签: php laravel

为什么我收到此错误?我该如何解决这个问题呢?我试图检索用户的帖子。

User.php模型

<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    use UserTrait, RemindableTrait;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password', 'remember_token');


    public function Posts()
    {
            return $this->hasMany('Posts');
    }
}

Post.php模型

<?php 

    Class Posts extends Eloquent 
    {
        public function User()
        {
                return $this->belongsTo('User');
        }

}

我猜错误在于Posts.php模型。

控制器

public function newPost($id)
    {
        $user = User::findOrFail($id);

        $post =  new Posts();
        $post->title = Input::get('title');
        $post->content = nl2br(Input::get('content'));

        $user->post()->save($post);

        return Redirect::route('profile', array('id' => $user->id));

    }

查看

@section('post')
    <section>
        @foreach($users->posts as $post)
        <p>{{$user->name}} says...</p>
        <blockquote>{{$post->content}}</blockquote>
        @endforeach
    </section>

@stop

1 个答案:

答案 0 :(得分:0)

Laravel使用了很多约定优于配置,因此请确保您的约定正确。

如果您的课程为Posts,请确保您的文件名为Posts.php。你的问题是它提到了两种方式。

您对该用户的关系方法为Post()(大写),但您以$user->post()(小写)的形式访问它。确保您的命名和使用一致。