我正在尝试用laravel从我的数据库中检索一列...我已经确认该列确实存在,但显然laravel认为不一样..任何帮助?谢谢!
错误如下..
"Property [Salt] does not exist on this collection instance."
帐户模型:
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
class accounts extends Authenticatable
{
protected $table = "accounts";
public $pkey = 'id';
protected $salt = 'Salt';
protected $fillable = ['id', 'Username', 'Key'];
public $timestamps = false;
}
CustomAuthController.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use Auth;
class CustomAuthController extends Controller
{
//Login
public function showLoginForm()
{
return view('auth.login');
}
public function login(Request $request)
{
$this->validate($request, [
'username' => 'required|max:255',
'Key' => 'required|max:255',
]);
$user= User::where('Username', '=', $request->username)->get();
$hashedpw = hash('whirlpool', $request->Key);
if(Auth::attempt(['Username' => $request->username, 'Key' => $request->Key]))
{
return 'Logged in successfully';
}
else
{
return 'error'. $request->username. ' '. $user->Salt; #problematic variable <-
}
}
}
谢谢! 千斤顶
嗨,再说..我已经缩小了问题,虽然我无法弄清楚如何解决它..如果我的帐户没有登录我的网站,我似乎无法访问盐列。但是,如果我登录该网站,我可以选择它吗?..
答案 0 :(得分:1)
使用first()
代替get()
-
$user= User::where('Username', '=', $request->username)->first();
答案 1 :(得分:1)
如@Sohel0415 answer中所述,您的查询返回的集合不是单个用户模型。您应该使用first()
代替get()
您的salt
属性可见性标识符为protected
,您应该将其更改为public
,以便从外部访问属性。
答案 2 :(得分:0)
您将Salt定义为protected $salt
所以请尝试$user->salt;
它应该可以正常工作。