Laravel属于抛出未定义的函数App / BelongsTo()异常

时间:2015-06-15 15:37:56

标签: php sql laravel eloquent belongs-to

我有一个评论表和用户表,其关系为:user-> hasMany('comments')和comment-> belongsTo('user')。出于某些原因,我不断得到这个

FatalErrorException in Comment.php line 22: Call to undefined function App\belongsTo()

我的其他模型与HasMany关系没有任何问题,但是,注释模型对我尝试的每一件事都有问题(即使我只是使用HasMany来查看它是否会有不同的错误)。

这是评论模型。     

use Illuminate\Database\Eloquent\Model;

class Comment extends Model {

    protected $table = 'comments';

    protected $fillable = [
        'anime_id',
        'user_id',
        'user_comment'
        ];

    public function postedOnAnime($query)
    {
        $query->where('anime_id', '=', $this.id);
    }

    public function user()
    {
        return $this.belongsTo('App\User', 'user_id', 'id');
    }

    public function anime()
    {
        return $this.belongsTo('App\Anime');
    }

}

以下是Users表:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->integer('role');
            $table->string('name')->unique();
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }

}

这是评论表

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCommentsTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('comments', function(Blueprint $table)
        {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->integer('anime_id')->unsigned();
            $table->text('user_comment');
            $table->timestamps();

            $table->foreign('user_id')
                        ->references('id')
                        ->on('users')
                        ->onDelete('cascade');

            $table->foreign('anime_id')
                        ->references('id')
                        ->on('animes')
                        ->onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('comments');
    }

}

最后,当我调用$ comment-&gt; user()时,它会因错误而失败。有谁知道这个错误来自哪里?

感谢。

3 个答案:

答案 0 :(得分:1)

嗯,发生这个错误是因为我有&#39;。&#39;取代&#39; - &gt;&#39;。无论我是$this.belongsTo('App\User');还是$this.hasMany('App\User');还是$this.thecakeisalie('App\User');,我都无法弄清楚它为什么总是抛出完全相同的错误,直到我坐在我的许多模型之间盯着文字再次。然后,瞧,它是另一个愚蠢的,很小的,很难找到我的错误(通常是这样)。

答案 1 :(得分:0)

返回$ this.belongsTo('App \ User','user_id','id');   至 返回$ this-&gt; belongsTo('App \ User');

答案 2 :(得分:0)

我认为这是来自使用.来访问属性的其他语言的常见错误。在PHP中,它应该是->

$this.belongsTo('...') 应该改写为 $this->belongsTo('...')