CodeIgniter 4 模型->查找()

CodeIgniter 4 Models->find()

如果这个问题已经被问过,我很抱歉,

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

$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',
  ]
]

docs here 开始,结果是 return 一行,但是当我想使用数组的值时,我需要像这样输入它:

$data[0]['username']

而不是像这样:

$data['username']

当我在没有 'where' 条件的情况下这样做时,它确实按预期工作:

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

但是当我想使用 'username' 值进行搜索时,问题就出现了。 然后我像这样尝试它当然它不起作用(return null):

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

任何指点将不胜感激,谢谢。

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

如果您只想通过主键查找一条记录,则主要是查找。

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

但是在您展示的示例中,您没有传递主键,因此它会假设您需要多个结果,因此您的数组。

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

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

如果传递主键则查找一行,如果使用其他键则查找多行

findAll = 始终假定结果数组的 return

首先 = 始终假定一行的 return