【问题标题】:Call to undefined Builder::save() when saving a polymorphic relationship保存多态关系时调用未定义的 Builder::save()
【发布时间】:2014-05-11 23:39:50
【问题描述】:

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

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 吗?

【问题讨论】:

    标签: php laravel laravel-4 polymorphism


    【解决方案1】:

    我觉得你变了

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

    $usuario->save();
    

    然后像往常一样运行你的多态关系。

    【讨论】:

    • 你的意思是做 $usuario->save();然后这个 $usuario->cuenta()->save($alumno); ?
    【解决方案2】:

    我做错了。 (?)

    改变了

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

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

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2019-10-20
      相关资源
      最近更新 更多