如何以相同的形式向多个表提交数据

时间:2014-04-03 19:08:50

标签: php mysql laravel laravel-4

我有2个表:listing和listings_specifications

列表表

  • ID
  • 状态
  • 位置
  • specifications_id

Listings_specifications表

  • ID
  • listing_id
  • swimming_pool
  • water_well

我需要在添加商家信息的同一表单上选择规格(复选框)。我已经创建了所有的表单,视图,模型,控制器,但我认为我有一些逻辑错误。

Listing.php模型

protected $ table =' listing';

public function contact()
{
   return $this->BelongsTo('contacts');
}
public function specifications()
{
   return $this->BelongsTo('listings_specifications');
}

Specification.php模型

protected $ table =' listings_specifications';

public function listings()
{
   return $this->BelongsTo('listings');
}

ListingsController.php(数据保存在数据库中)

$listing = new Listing;
                $contact = new Contact;
                $listing->status = Input::get('status');
                $listing->listingfor = Input::get('listingfor');
                $listing->propertystatus = Input::get('propertystatus');
                $listing->propertytype = Input::get('propertytype');
                $listing->userid = Auth::user()->id;
                $listing->location = Input::get('location');
                $listing->contact_id = $contact_id;

                $listing->save();

                $specifications = Specification::find($id);

                if( $listings->save() ) {
                        $specifications = new Specification;
                        $specifications->listing_id = $id;
                        $specifications->swimming_pool       = Input::get('swimming_pool');
                        $specifications->water_front      = Input::get('water_front');
                        $specifications->save();
                }

我收到此错误:未定义的变量:id

我哪里出错了?

谢谢

2 个答案:

答案 0 :(得分:1)

您在$id行中使用$specifications = Specification::find($id);,但之前没有定义。

答案 1 :(得分:1)

看起来你有一些逻辑错误。

首先,你永远不会在任何地方设置$id,但这没关系,因为你真的不需要它。

删除$specifications = Specification::find($id);行,因为它没有做任何事情。

然后将您的上一部分改为这样的......

            if( $listings->save() ) {
                    $specifications = new Specification;
                    $specifications->swimming_pool       = Input::get('swimming_pool');
                    $specifications->water_front      = Input::get('water_front');
                    $listing->specifications()->save($specifications);
            }

$listing->specifications()->save($specifications);会自动使用正确的listing_id保存新规范。

Listing模型的specifications关系修改为...

public function specifications()
{
   return $this->hasMany('Specification');
}

我假设这里有一个列表可以有很多规格。如果没有,您可以轻松地将其更改为hasOne