Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter 4型号->;查找()_Php_Codeigniter 4 - Fatal编程技术网

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