我正在使用Eloquent ORM创建应用程序,并且在选择数据库中的信息时遇到问题。
运行以下代码时:
public function index(){
$user = Profile::select('idUser', 'userUrl', 'firstName')->where('userUrl', '=', $this->User)->orWhere('idUser', '=', $this->User)->first();
if(!$user){
echo "user not found";
}else{
echo "User found: ". $user['firstName'] . " - " . $user['userUrl'];
}
}
如果存在,它会正确地将信息写入变量,但如果它不存在,则返回该表中记录的第一行。
我的桌子: My Table
请帮我解决一下!
谢谢!
答案 0 :(得分:0)
代码看起来很好,我使用的代码很多次。
确保您的数据库记录不匹配,也许它正常工作,但您混淆了OR
你可以做到
$query = Profile::select('idUser', 'userUrl', 'firstName')->where('userUrl', '=', $this->User)->orWhere('idUser', '=', $this->User)->toSql();
dd($query);
检查查询是否正确。
答案 1 :(得分:0)
试试这个
public function index() {
$user = Profile::select('idUser', 'userUrl', 'firstName')->where('userUrl', '=', $this->User)->orWhere('idUser', '=', $this->User);
if(!$user = $user->first()){
echo "user not found";
}else{
echo "User found: ". $user->firstName . " - " . $user->userUrl;
}
}
答案 2 :(得分:0)
我能够以一种我找不到合适的方式来解决它。 但它是一种完美的姑息,它遵循代码:
public function index(){
echo "Página de " . $this->user . "<br/>";
if(is_numeric($this->user)){
settype($this->user, 'int');
echo "Int <br/>";
$user = Profile::select('idUser', 'userUrl', 'firstName')->where('idUser', '=', $this->user)->first();
}
if(is_string($this->user)){
settype($this->Usuario, 'String');
echo "String <br/>";
$user = Profile::select('idUser', 'userUrl', 'firstName')->where('userUrl', '=', $this->user)->first();
}
if($user == null){
echo "User not found";
}else{
echo "Perfil de " . $user->firstName;
}
}