laravel 5.2 Вызов неопределенного метода Illuminate Database Query Builder :: associate ()

Я использую laravel 5.2, и я получаю эту ошибку при создании пользователя.

Вызов неопределенного метода Illuminate Database Query Builder :: namespace App ; используйте Illuminate Foundation Auth User как Authenticatable ; class User extends Authenticatable { protected $ fillable = [ 'name' , 'email' , 'password' , 'role_id' ]; protected $ hidden = [ 'password' , 'remember_token' , ]; public function role () { return $ this -> hasOne ( 'App Role' ); } }

это мой User.php

namespace App;

use IlluminateDatabaseEloquentModel;

class Role extends Model
{
protected $table = "roles";

protected $fillable = [
    'name','description'
];

public function user()
{
    return $this->belongsTo('AppUser');
}
}

my role.php

public function up()
{
    Schema::create('roles', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('description');
    });

    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password');
        $table->integer('role_id')->unsigned();
        $table->foreign('role_id')->references('id')->on('roles');
        $table->rememberToken();
        $table->timestamps();
    });
}

и это миграция, которую я использовал

$role = Role::find(1);

    $user = new User();
    $user->name = "Admin";
    $user->email = "email@gmail.com";
    $user->password = bcrypt("password");
    $user->role()->associate($role);
    $user->save();

это код контроллера, который я использую

associate()

когда я запускаю этот код, я получаю сообщение «Вызов неопределенного метода Illuminate Database Query Builder :: belongsTo ()»

дайте мне знать, что не так с моим кодом.

php,laravel,laravel-5,laravel-5.2,

0

Ответов: 2


1

associate()Функция используется для обновления role()отношений. Ваши hasOne()отношения - это associate(), поэтому метод не существует.

Источник


0

Я думаю, вы можете использовать associate()метод для ассоциирования роли, а затем изменить свои отношения, как показано ниже:

return $this->hasOne('AppRole');

заменить

return $this->belongsTo('AppRole');

а также

return $this->belongsTo('AppUser');

заменить

return $this->hasOne('AppUser');

Надеюсь, это поможет вам хорошо!

PHP, Laravel, Laravel-5, Laravel-5,2,
Похожие вопросы