问题描述
如果这个问题以前已经问过了,我感到很抱歉,
所以我想做的就是从我的模型中得到这样的结果
$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 =始终假定返回一行