用户可以选择多个选项:
<!-- Select Multiple -->
<div class="form-group">
<label class="col-md-4 control-label" for="bedrooms">Bedrooms</label>
<div class="col-md-4">
<select id="bedrooms" name="bedrooms[]" class="form-control"
multiple="multiple">
<option value="1" selected="selected">Studio</option>
<option value="2">1</option>
<option value="3">2</option>
<option value="4">3</option>
<option value="5">4</option>
<option value="6">5</option>
<option value="7">6+</option>
</select>
</div>
</div>
我想将这些变量存储在表{ - 1}}中的不同行中,以便我可以将它们包含在查询中。每间卧室都与bedrooms
:
我尝试使用Laravel的文档中显示的criteria_id
等查询,但没有成功 - 错误:
$criteria->bedrooms()->saveMany(Input::get('property_type'));
和Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save()
must be an instance of Illuminate\Database\Eloquent\Model, string given
但这会返回错误:$criteria->bedrooms()->attach(Input::get('property_type'));
关联:
Call to undefined method Illuminate\Database\Query\Builder::attach()
-
Criteria
非常感谢你的帮助。
答案 0 :(得分:0)
saveMany()方法需要一组模型,而不是id的
答案 1 :(得分:0)
saveMany
将在这种情况下工作,您只需要首先将输入数组转换为一组新模型。假设你知道Criteria ID,试试这个:
foreach (Input::get('bedrooms') as $bedroom) {
$selected[] = New Bedroom(['bedroom' => $bedroom]);
}
$criteria = Criteria::find($criteria_id)->bedrooms()->saveMany($selected);
答案 2 :(得分:0)
我在视图中使用复选框:
@foreach($bedrooms as $row)
<input type="checkbox" name="bedrooms[]" value="<?php echo $row->id ?>">{{$row->name}}<br/>
@endforeach
在模特身上制作BedroomCriteria .. 喜欢这个
class BedroomCriteria extends Eloquent {
public function Bedroom() {
return $this->belongsTo('Bedroom');
}
public function Criteria() {
return $this->belongsTo('Criteria');
}
}
然后控制器上的保存代码就像这样
if (isset($input["bedrooms"])) {
foreach ($input['bedrooms'] as $check) {
$bedroom_criteria = array(
"bedroom_id" => $check,
"criteria_id" => $input['id']
);
$bedroom_criteria= BedroomCriteria::create($bedroom_criteria);
}
}