保存多态关系时,调用未定义的Builder :: save()

时间:2014-05-11 23:39:50

标签: php laravel laravel-4 polymorphism

我在注册用户时尝试保存多态关系,但它会返回我:

Call to undefined method Illuminate\Database\Query\Builder::save()

我的数据库中有3个表:

Schema::create('usuarios', function(Blueprint $table) {
    $table->increments('id');
    $table->string('nombreUsuario', 20);
    $table->string('password', 60);
    $table->string('email', 30);
    $table->string('remember_token', 100)->nullable();
    $table->integer('cuenta_id');
    $table->string('cuenta_type');

    $table->timestamps();
});

Schema::create('empresas', function(Blueprint $table) {
    $table->increments('id');
    $table->string('nombreEmpresa', 50);
    $table->string('direccion', 50);

    $table->timestamps();
});

Schema::create('alumnos', function(Blueprint $table) {
    $table->increments('id');
    $table->string('nombre', 50);
    $table->string('apellidoPaterno', 50);
    $table->string('apellidoMaterno', 50);
    $table->integer('semestre');

       $table->timestamps();
});

在我的控制器上,当用户注册时:

$alumno = new Alumno;

$alumno->nombre             = Input::get('nombre');
$alumno->apellidoPaterno    = Input::get('paterno');
$alumno->apellidoMaterno    = Input::get('materno');
$alumno->semestre           = Input::get('semestre');

$alumno->save();

$usuario = new User;

$usuario->nombreUsuario     = Input::get('usuario');
$usuario->password      = Hash::make(Input::get('password'));
$usuario->email             = Input::get('email');

$usuario->cuenta()->save($alumno);  // <--Here

模特:

<?php

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

class User extends Eloquent implements UserInterface, RemindableInterface {
 ...
    public function cuenta() {
        return $this->morphTo();
    }
}

<?php

class Alumno extends Eloquent {
    protected $fillable = [];

    public function user() {
        return $this->morphMany('User', 'cuenta');
   }    
}

<?php

class Empresa extends Eloquent {
    protected $fillable = [];

    public function user() {
        return $this->morphMany('User', 'cuenta');
    }
}

每次我尝试注册某人时,都会返回this error

如果有人能告诉我自己做错了什么会很棒。谢谢。 :)

更新

更改了我将模型保存到的方式:

$alumno->save();
$usuario->save();
$usuario->cuenta()->save($alumno);

它返回     调用未定义的方法Illuminate \ Database \ Query \ Builder :: save()

也用过:

$alumno->save();
$usuario->save();
$usuario->cuenta()->associate($alumno);

返回

Maximum function nesting level of '100' reached, aborting! 

我应该使用FK吗?

2 个答案:

答案 0 :(得分:1)

我认为你改变了

$usuario->cuenta()->save($alumno);

$usuario->save();

然后就像以前一样正常运行你的多态关系。

答案 1 :(得分:0)

我做错了。 (?)

更改

$usuario->cuenta()->save($alumno);

$alumno->user()->save($usuario);