为什么使用模型属性属性返回空?
我有一个控制器和一个模型。为什么使用模型属性属性返回空?
现在,我想从控制器获取模型的属性,但我无法访问它。这里是我的代码:
模型
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Model;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password','role'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function isRole()
{
return $this->role; //mysql column role
}
}
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
class HomeController extends Controller
{
public function index()
{
$user = new User;
return $user->isRole(); //this is just to test display the role column. but it returns empty or no value.
}
}
我也试图呼应$this->role
功能isRole()
里面,但是这又是空的。在我的数据库中,我在role
列中插入了值。
我也执行了PHP工匠迁移为了更新数据。
有人帮我:这是怎么回事?感谢
在您的代码:
$user = new User;
return $user->isRole();
你要创建一个用户无中生有,所以作用将是垃圾。请尝试以下方法让你的表的第一个用户:
$user = User::firstOrFail();
return $user->isRole();
注意,如果表是空的,firstOrFail
会抛出异常。
编辑:
正如shukshin.ivan's comment指出,还可以使用过滤用户像下面这样的where
条款:
$user = User::where('email', $request->email)->first();
return $user->isRole();
上有什么记录并不重要,因为它有道理。如果我要通过电子邮件地址获取数据,那该怎么办?这里是我的用户:'$ user = User :: where('email',$ request-> email)'我应该如何获得基于该电子邮件地址的列? – smzapp
获得第一个(它是唯一的)匹配用户'$ user = User :: where('email',$ request-> email) - > first()' –
thx @ shukshin.ivan,我将你的解答添加到我的答案中 – wasthishelpful
尝试
public function index()
{
$user = App\User::find(1);
return $user->isRole();
}
你得到空值,因为new User();
为空
你只是在PHP内存中实例化一个新的用户模型,根本不需要从数据库中检索,因此,数据库 –