我的目的:
1.从用户输入中获取行的id,
2.更改所选行的第一行值。
我有一个这样的模型:
myModel.php
class myModel extends Eloquent{
protected $table = 'myTable';
protected $primaryKey = 'id';
public $timestamps = false;
public incrementing = false;
protected fillable = array(
'id', //yes it needs to be fillable...
'name',
'surname'
);
}
myController.php
class myController extends BaseController{
public function someFunction(){
$modelInstance = myModel::where('id', Session::get('id'))
->where('otherID', Input::get('someHTMLInput'))
->first();
$modelInstance->id = Session::get('id');
$modelInstance->name = Input::get('someNameInput');
$modelInstance->surname = Input::get('someSurnameInput');
$modelInstance->save();
}
}
以下是发生的事情:
我可以很好地发布我从输入中得到的值
2.当涉及到控制器的保存方法时,查询会更新每一行'值包括以下ID号。
即在数据库上
id=1; otherID=1; name=aaa; surname=bbb;
id=1; otherID=2; name=xxx; surname=yyy;
id=1; otherID=3; name=ccc; surname=ddd;
当我尝试更改名称aaa-> rrr时:
id=1; otherID=1; name=rrr; surname=bbb;
id=1; otherID=2; name=rrr; surname=yyy;
id=1; otherID=3; name=rrr; surname=ddd;
提前致谢。
答案 0 :(得分:1)
Eloquent目前不支持复合主键。如果您想表明对此问题的支持,我们会在over at github进行讨论。
你能做什么,是这样的:
myModel::where('id', Session::get('id'))
->where('otherID', Input::get('someHTMLInput'))
->update([
'name' => Input::get('someNameInput'),
'surname' => Input::get('someSurnameInput')
]);
然而,有了这个,您几乎可以使用所有模型功能。它与:
基本相同DB::table('my_model')->where('id', Session::get('id'))
->where('otherID', Input::get('someHTMLInput'))
->update([
'name' => Input::get('someNameInput'),
'surname' => Input::get('someSurnameInput')
]);
答案 1 :(得分:0)
如果id
是主键,请将其在数据库中设置为主键,并在需要时自动增量。在此代码中,所有ID都为1,因此它会更新所有行。如果您需要更新与otherId相对应的数据,可以将protected $primaryKey = 'id';
设置为protected $primaryKey = 'otherId';
。