【问题标题】:Is it possible to access two models from a single function of a controller in Laravel4?是否可以从 Laravel4 中控制器的单个功能访问两个模型?
【发布时间】:2015-05-02 12:35:58
【问题描述】:

所以我尝试使用 Laravel4 将值从一个表单插入到两个表中。 这是我的 Store() 函数。我做得对吗..? 我知道我应该使用两个控制器 AddressController.php 和 PeopleController.php..,但是我可以使用单个控制器使用单个表单插入两个表吗?

    public function store()
    {
        $rules = array(
            'address_id'      => 'required',
            'contact_id' => 'required',
            'prefix'  => 'required',
            'firstname' => 'required',
            'middlename' => 'required',
            'lastname' => 'required',
            'suffix' => 'required',
            'occupation'  => 'required',
            'gender'  => 'required',
            'comment'  => 'required'

        );

        $validator = Validator::make(Input::all(), $rules);
        $user= Auth::user();
        if (!empty($user->id))
            $user_id=$user->id;

        // process the login
        /*if ($validator->fails()) {
            return Redirect::to('people/create')
                ->withErrors($validator);
        } else {*/
            // store
            $person = new Person;
            $person->user_id=$user_id;
            $person->address_id      =Input::get('address_id');
            //$person->contact_id      = Input::get('contact_id');
            $person->prefix = Input::get('prefix');
            $person->firstname  =Input::get('firstname');
            $person->middlename    =Input::get('middlename');
            $person->lastname    =Input::get('lastname');
            $person->suffix  =Input::get('suffix');
            $person->occupation  =Input::get('occupation');
            $person->gender     =Input::get('gender');
            $person->comment  =Input::get('comment');
            //$person->user_id =Input::get('user_id');
            $person->save();


            $validator = Validator::make($data = Input::all(), Address::$rules);

            $address->address1 = Input::get('address1');
            $address->address2 = Input::get('address2');
            $address->apt = Input::get('apt');
            $address->city = Input::get('city');
            $address->state = Input::get('state');
            $address->zip = Input::get('zip');
            $address->country = Input::get('country');

            $address->save();

            // redirect
            Session::flash('message', 'Successfully created new Employee!');
            //return Redirect::to('addresses/create');
            return Response::json($person);



    }

【问题讨论】:

  • 当然可以!您似乎唯一缺少的是 $address = new Address; 并且可能将人和地址链接在一起
  • @teresko:我试过了……但还是不行……!!

标签: php laravel laravel-4 laravel-routing


【解决方案1】:

只要你定义了 person 和 address 模型之间的关系,那么你就可以使用 person 模型的 push() 方法,该方法旨在一步保存多个相关模型

请注意,如果您为模型定义了fillable,您还可以从代码中删除许多样板的$person->prefix = Input::get('prefix'); 语句

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多