我有一个控制器和一个模型。
现在,我想从控制器获取模型的属性,但我无法访问它。这是我的代码:
MODEL
<?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 artisan migrate以更新数据。
有人帮助我:这里发生了什么?谢谢
答案 0 :(得分:3)
在您的代码中:
$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();
答案 1 :(得分:1)
尝试
public function index()
{
$user = App\User::find(1);
return $user->isRole();
}
您获得空值,因为new User();
为空