Php CodeIgniter 4型号->;查找()
我很抱歉如果这个问题以前已经问过了 所以我要做的是从我的模型中得到这样的结果Php CodeIgniter 4型号->;查找(),php,codeigniter-4,Php,Codeigniter 4,我很抱歉如果这个问题以前已经问过了 所以我要做的是从我的模型中得到这样的结果 $data = $userModel->where('username', 'myname')->find(); 我的期望: $data = [ 'id' => 1, 'username' => 'myname', 'fullname' => 'my full name', ] 我得到的是: $data = [ 0 => [ 'id' => 1,
$data = $userModel->where('username', 'myname')->find();
我的期望:
$data = [
'id' => 1,
'username' => 'myname',
'fullname' => 'my full name',
]
我得到的是:
$data = [
0 => [
'id' => 1,
'username' => 'myname',
'fullname' => 'my full name',
]
]
从中,它确实返回一行作为结果,但是当我想使用数组的值时,我需要像这样键入它:
$data[0]['username']
$data['username']
而不是像这样:
$data[0]['username']
$data['username']
在没有“where”条件的情况下,我这样做时,它确实能按预期工作:
$data = $userModel->find(1);
但是当我想用“username”值来搜索时,问题就出现了。
然后我像这样尝试,当然它不起作用(返回null):
任何一个指针都会很受欢迎,谢谢。通常,当您需要多个结果时,您应该使用->findAll()。当您只需要一个结果时,最好使用->first() 如果您只想按主键查找一条记录,那么Find通常是存在的
$user = $userModel->find($user_id);
但是,在您展示的示例中,您没有传递主键,因此它将假定您需要多个结果,因此需要数组
为了确保您只得到一个结果,并且具有您想要的结构,我将使用:
$data = $userModel->where('username', 'myname')->first();
find=如果传递了主键,则为一行;如果使用了其他内容,则为多行
findAll=始终假定返回一个结果数组
first=始终假设返回一行如果您想搜索引擎,您应该更改查询,“查找”函数的工作方式是这样的:如果没有传入任何参数,它将返回该模型表中的所有行,实际上就像findAll(),尽管不太明确。因此,您的查询对于您的预期输出是错误的。。谢谢你的解释@nurbebokboymurodov