Laravel没有拿起我的桌子栏? - Laravel 5.5

时间:2018-01-28 13:54:45

标签: php mysql laravel eloquent laravel-5.5

我正在尝试用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 <-
        }
    }
}

谢谢! 千斤顶

嗨,再说..我已经缩小了问题,虽然我无法弄清楚如何解决它..如果我的帐户没有登录我的网站,我似乎无法访问盐列。但是,如果我登录该网站,我可以选择它吗?..

3 个答案:

答案 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;

它应该可以正常工作。