Это мой ресторанный стол:
стол ресторана имеет поле adminID
. и это таблица администратора:
У меня есть форма, которая имеет значения как ресторана, так и администратора,
Это модель администратора:
class Admin extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; public function restaurant(){ return $this->belongsTo('Restaurant', 'ID'); }
Это модель ресторана:
class Restaurant extends Eloquent implements UserInterface, RemindableInterface { use UserTrait, RemindableTrait; public function admin(){ return $this->hasOne('Admin', 'adminID'); }
Это ресторан ControlController для хранения нового ресторана
$input = Input::all(); $validation = Validator::make($input, Admin::$rules); if($validation->passes()){ $validation = Validator::make($input, Restaurant::$rules); if ($validation->passes()) { $admin = Admin::create(Input::only('username', 'password', 'mobileNumber', 'firstName', 'lastName'));
как вы видите теперь, у меня есть переменная $admin
,
что такое statmnet, что мне нужно, чтобы вставить новый ресторан
Во-первых, вам не нужно реализовывать UserInterface
и RemindableInterface
а также не использовать use UserTrait, RemindableTrait
для создания всех ваших моделей, но только модель User
если у вас есть модель пользователя для аутентификации пользователя (вход / выход) , Если модель Admin
используется в качестве замены модели User
вам необходимо реализовать эти интерфейсы, а также использовать эти черты. Также вам нужно явно объявить свойство protected $table
для назначения имени таблицы, которое используется для модели Admin
(если вы не используете модель User
), а также вам нужно изменить некоторые параметры в файле app/config/auth.php
как нижеприведенный:
'model' => 'Admin', 'table' => 'admins', // Could be anything else, same as protected $table property
Затем попробуйте следовать, чтобы сохранить связанную модель при создании Admin
:
//... if ($validation->passes()) { $admin = Admin::create( Input::only('username', ...) ); $restaurent = new Restaurant(Input::only(...)); $admin->restaurant()->save($restaurent); }
Вы захотите использовать метод associate()
.
$restaurant = Restaurant::find(10); $restaurant->admin()->associate($admin); $restaurant->save();
-$restaurant = Restaurant::find(10); $restaurant->admin()->associate($admin); $restaurant->save();
Ссылка: http://laravel.com/docs/eloquent#inserting-related-models