我从Laravel开始并需要帮助, 直截了当地说:
我的模特: 佩索阿(人)
class Pessoa extends Eloquent {
protected $table= 'pessoas';
public function usuario(){
return $this->hasOne('Usuario', 'pessoa_id', 'id');
}
Usuario(用户)
class Usuario extends Eloquent {
protected $table= 'usuarios';
public function pessoa(){
return $this->belongsTo('Pessoa', 'pessoa_id', 'id');
}
我的行动方法(发布)
public function salvar(){
$pessoa = new Pessoa();
$pessoa->nome = Input::get('nome');
$pessoa->cpf = Input::get('cpf');
$usuario = new Usuario();
$usuario->email = Input::get(email);
$usuario->senha = Hash::make(Input::get('senha'));
$usuario->pessoa()->associate($pessoa);
$usuario->push();
因此保留两个对象但不保存usuario(用户)表中的密钥pessoa(person)。 我究竟做错了什么?
答案 0 :(得分:1)
associate()
适用于已有的模型。由于$usuario
是新的,因此您需要使用save()
,将新对象传递给$pessoa
usuario
关系。
代替:
$usuario->pessoa()->associate($pessoa);
$usuario->push();
使用:强>
$pessoa->save();
$pessoa->usuario()->save($usuario);
答案 1 :(得分:1)
为了关联,外键需要可用,否则实际上没有任何关联。
尝试$pessoa->save();
,pessoa_id
模型上的pessoa
可用。
然后您可以使用$usuario->pessoa()->associate($pessoa);
,因为它现在会知道要pessoa_id
保存的usuario
。