CodeIgniter 4模型-> find

问题描述

如果这个问题以前已经问过了,我感到很抱歉,

所以我想做的就是从我的模型中得到这样的结果

$data = $usermodel->where('username','myname')->find();

我的期望:

$data = [
  'id' => 1,'username' => 'myname','fullname' => 'my full name',]

我得到什么:

$data = [
  0 => [
    'id' => 1,]
]

docs here中,它确实返回一行结果,但是当我想使用数组的值时,我需要这样输入:

$data[0]['username']

而不是这样:

$data['username']

当我这样做而没有'where'条件时,它确实按预期工作:

$data = $usermodel->find(1);

但是当我想使用“用户名”值进行搜索时出现问题。 然后我就这样尝试了,当然不起作用(返回null):

$data = $usermodel->find('username','myname');

任何指针都会让人很感激,谢谢。

解决方法

通常,当您想要多个结果时,应使用-> findAll()。当您只想要一个结果时,最好使用-> first();

如果您只想通过其主键保存一条记录,则查找在那里。

$user = $userModel->find($user_id);

但是,在示例中,您显示没有传递主键,因此它将假定您想要多个结果,因此需要数组。

为确保只得到一个结果并具有您要使用的结构,

$data = $userModel->where('username','myname')->first();

find =如果传递了主键,则返回一行;如果使用其他键,则返回多行

findAll =始终假定返回结果数组

first =始终假定返回一行