为什么我不能将find
用于其他查询?我希望能够找到id = 2
和otherColumn = thisValue
的内容。但是,如果我使用find(2)
并添加其他查询,那么我得到的sql查询是where 'id' = ?
并返回所有ID。为什么呢?!
由于
答案 0 :(得分:0)
find($id)
会自动在$primaryKey
列中找到具有相同值的记录,您可以在模型中设置$primaryKey
。如果您希望使用其他查询,则应使用where()
您的查询应该是这样的:
Model::where('id','=',2)->where('otherColumn','=','thisValue')->get();
答案 1 :(得分:0)
您可以将find
与其他查询一起使用,但不需要使用find
的其他查询,因为find
方法使用primary key
查询数据库,如果您让一个用户拥有主键,例如,id=1
然后它不能是两次,意味着它必须是唯一的,使用find
的其他查询是没用的。 find
中的Illuminate\Database\Eloquent\Model
方法会调用find
类的Illuminate\Database\Eloquent\Builder
方法,该方法如下:
public function find($id, $columns = array('*'))
{
if (is_array($id))
{
return $this->findMany($id, $columns);
}
$this->query->where($this->model->getKeyName(), '=', $id);
return $this->first($columns);
}
如果你使用这样的东西:
User::where('username', 'someuser')->find(1);
它会起作用(find
应该最后调用,它会调用first
和first
调用get
)但在这种情况下它没有用;与find
。主键可以是任何字段;不仅id
和getKeyName
会检索它。