laravel 4 :使用 eloquent 将新的重新编码插入到一对一的关系表中
laravel 4 : insert new recode into a one to one relational tables using eloquent
例如:
有两个 table 是一对一相关的
一个 table 是用户,另一个是学生
用户-
primaryKey-'uid',name,age
学生-
primaryKey-'std_id' , faculty , gpa
这是学生的榜样table
class Student extends Eloquent {
protected $table = 'students';
protected $primaryKey = 'std_id';
public $timestamps = false;
public function User(){
return $this->belongsTo('User');
}
}
这是用户的模型table
class User extends Eloquent {
protected $table = 'users';
protected $primaryKey = 'uid';
public function Student(){
return $this->haveOne('Student');
}
}
我想知道如何插入新的重新编码并保持 tables
之间的关系
$user = new User();
$user->name= Input::get('name');
$user->age= Input::get('age');
$user->save();
$student= new Student();
$student->faculty = Input::get('faculty');
$student->gpa= Input::get('gpa');
$student->save();
错误信息 ►
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
以上代码无效,我可以使用 push() 而不是使用 save()
怎么样?
我真的很感激任何帮助:)
docs实际上说明了一切。
只需对关系使用 save()
方法:
$user = new User();
$user->name= Input::get('name');
$user->age= Input::get('age');
$user->save();
$student= new Student();
$student->faculty = Input::get('faculty');
$student->gpa= Input::get('gpa');
$user->Student()->save($student);
或者反过来 associate()
:
$user = new User();
$user->name= Input::get('name');
$user->age= Input::get('age');
$user->save();
$student= new Student();
$student->faculty = Input::get('faculty');
$student->gpa= Input::get('gpa');
$student->User()->associate($user);
$student->save();
哦还有 有One() 而不是 haveOne()
例如:
有两个 table 是一对一相关的
一个 table 是用户,另一个是学生
用户-
primaryKey-'uid',name,age
学生-
primaryKey-'std_id' , faculty , gpa
这是学生的榜样table
class Student extends Eloquent {
protected $table = 'students';
protected $primaryKey = 'std_id';
public $timestamps = false;
public function User(){
return $this->belongsTo('User');
}
}
这是用户的模型table
class User extends Eloquent {
protected $table = 'users';
protected $primaryKey = 'uid';
public function Student(){
return $this->haveOne('Student');
}
}
我想知道如何插入新的重新编码并保持 tables
之间的关系$user = new User();
$user->name= Input::get('name');
$user->age= Input::get('age');
$user->save();
$student= new Student();
$student->faculty = Input::get('faculty');
$student->gpa= Input::get('gpa');
$student->save();
错误信息 ►
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails
以上代码无效,我可以使用 push() 而不是使用 save()
怎么样?
我真的很感激任何帮助:)
docs实际上说明了一切。
只需对关系使用 save()
方法:
$user = new User();
$user->name= Input::get('name');
$user->age= Input::get('age');
$user->save();
$student= new Student();
$student->faculty = Input::get('faculty');
$student->gpa= Input::get('gpa');
$user->Student()->save($student);
或者反过来 associate()
:
$user = new User();
$user->name= Input::get('name');
$user->age= Input::get('age');
$user->save();
$student= new Student();
$student->faculty = Input::get('faculty');
$student->gpa= Input::get('gpa');
$student->User()->associate($user);
$student->save();
哦还有 有One() 而不是 haveOne()