我有2个表:listing和listings_specifications
列表表
Listings_specifications表
我需要在添加商家信息的同一表单上选择规格(复选框)。我已经创建了所有的表单,视图,模型,控制器,但我认为我有一些逻辑错误。
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
我哪里出错了?
谢谢
答案 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
。