Laravel 5.2 授权关系
Laravel 5.2 Auth relationship
我在使用 Auth class 时遇到了通过用户模型建立关系的问题。我认为这种关系应该是 $this->hasMany('App\Product') 并且还会 return 通过这种方法将新保存的 id 返回给变量。当我尝试使用 Auth::user()->products()->save($product) 时,出现以下错误。我正在学习 Laravel 5.2 但我不知道这段代码应该如何工作 可以给我一些帮助
FatalErrorException in ProductsController.php line 32:
Call to a member function products() on a non-object
用户模型:
<?php namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
use App\Product;
class User extends Authenticatable
{
use EntrustUserTrait;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function products() {
return $this->hasMany('App\Product');
}
}
产品型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $table = "products";
protected $fillable = ['category_id', 'user_id', 'supplier_id', 'title', 'price'];
public function user() {
return $this->belongsTo('App\User');
}
}
产品控制器:
class ProductsController extends Controller
{
public function create() {
$categories = Category::lists('name', 'id')->toArray();
$suppliers = Supplier::lists('company_name', 'id')->toArray();
return view('products.create', compact('suppliers', 'categories'));
}
public function store() {
$product = new Product(Request::all());
$id = Auth::user()->products()->save($product);
return redirect('admin/products');
}
}
我认为用户没有登录,这就是 Auth::user() 为空的原因
如果用户已登录,Auth::user()
仅 returns 一个 User
对象。您应该添加一些检查代码,例如:
if (! Auth::check()) {
// redirect to the login page, etc.
}
防止它为空。
我在使用 Auth class 时遇到了通过用户模型建立关系的问题。我认为这种关系应该是 $this->hasMany('App\Product') 并且还会 return 通过这种方法将新保存的 id 返回给变量。当我尝试使用 Auth::user()->products()->save($product) 时,出现以下错误。我正在学习 Laravel 5.2 但我不知道这段代码应该如何工作 可以给我一些帮助
FatalErrorException in ProductsController.php line 32:
Call to a member function products() on a non-object
用户模型:
<?php namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
use App\Product;
class User extends Authenticatable
{
use EntrustUserTrait;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function products() {
return $this->hasMany('App\Product');
}
}
产品型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $table = "products";
protected $fillable = ['category_id', 'user_id', 'supplier_id', 'title', 'price'];
public function user() {
return $this->belongsTo('App\User');
}
}
产品控制器:
class ProductsController extends Controller
{
public function create() {
$categories = Category::lists('name', 'id')->toArray();
$suppliers = Supplier::lists('company_name', 'id')->toArray();
return view('products.create', compact('suppliers', 'categories'));
}
public function store() {
$product = new Product(Request::all());
$id = Auth::user()->products()->save($product);
return redirect('admin/products');
}
}
我认为用户没有登录,这就是 Auth::user() 为空的原因
Auth::user()
仅 returns 一个 User
对象。您应该添加一些检查代码,例如:
if (! Auth::check()) {
// redirect to the login page, etc.
}
防止它为空。