2015-02-05 1 views
0

примера: есть две таблицы, которые связаны друг с другом один на один
один таблицу пользователей другой являются студентамиLaravel 4: вставить новое перекодирование в один на один реляционные таблицы с использованием красноречивого

users-
PrimaryKey-'uid 'имя, возраст


студенты- PrimaryKey-'std_id', факультет, GPA

и это модель для студентов стола

class Student extends Eloquent { 
protected $table = 'students'; 
protected $primaryKey = 'std_id'; 
public $timestamps = false; 

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

это модель для таблицы пользователей

class User extends Eloquent { 
protected $table = 'users'; 
protected $primaryKey = 'uid'; 
public function Student(){ 
return $this->haveOne('Student'); 
} 
} 

, и я хочу знать, как вставить новое перекодирование с держать отношения между таблицами

$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(); 

error msg ►

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails 

код не работает, и я могу использовать push() вместо сохранения()
как?
Я бы очень признателен за любую помощь :)

+0

Где находится внешний ключ в ваших таблицах? – lukasgeiter

+0

это запрос SQL студент таблицу выше структуры таблицы упрощена для оформления CREATE TABLE IF NOT EXISTS 'career'.'student' ( ' comp_name' УАКСНАК (45) NULL, NULL, УМОЛЧАНИЮ, 'user_id' INT (10) UNSIGNED NOT NULL, PRIMARY KEY ('std_id'), CONSTRAINT' fk_industry_users1' FOREIGN KEY ('std_id') ЛИТЕРАТУРЫ' career'.'users' (​​'uid') ON УДАЛИТЬ NO ACTION ON UPDATE NO ACTION) – Alupotha

ответ

1

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(); 

Oh, а также это имеет One() не haveOne()

+0

Вы спасли мою жизнь благодаря большому количеству :) это ответ! – Alupotha

Смежные вопросы