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
如果这个问题已经被问过,我很抱歉,
所以我想做的是从我的模型中得到这样的结果
$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