Php 拉威尔:可以';不要从表单上传信息

Php 拉威尔:可以';不要从表单上传信息,php,database,laravel,upload,Php,Database,Laravel,Upload,我正在尝试创建一个表单,登录用户可以将产品信息上载到DB。然后,我希望用户能够看到列表中的产品信息(仅限于他/她上传的产品) 这是我点击提交按钮时得到的错误 403此操作未经授权 当我重新加载页面时,会出现此错误 BadMethodCallException 调用未定义的方法App\Models\User::products() http://localhost:8000/products 我认为问题在于我如何获取产品信息。我有两个表,分别是用户表和产品表,这两个表是相关的。我试图做的是通过Au

我正在尝试创建一个表单,登录用户可以将产品信息上载到DB。然后,我希望用户能够看到列表中的产品信息(仅限于他/她上传的产品)

这是我点击提交按钮时得到的错误

403此操作未经授权

当我重新加载页面时,会出现此错误

BadMethodCallException 调用未定义的方法App\Models\User::products() http://localhost:8000/products

我认为问题在于我如何获取产品信息。我有两个表,分别是用户表和产品表,这两个表是相关的。我试图做的是通过
Auth::user()
获取登录的用户信息,并进入包含user\u id列的products表

这是我在ProductController中的代码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Product;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests\ProductRequest;

class ProductController extends Controller
{
    public function index()
    {
        $products = Auth::user()->products()->get();

        return view('product.show')->with(['products' => $products]);
    }

    public function create()
    {
        return view('product.create');
    }

    public function store(ProductRequest $request)
    {
        $product = new Product;
        $product->user_id = $request->user()->id;
        $product->name = $request->name;
        $product->price = $request->price;
        $product->description = $request->description;
        $product->category_id = $request->category_id;
        if ($request->hasFile('image')) {
            $path = $request->file('image')->store('public/product');
            $product->image = basename($path);
        }
        $product->save();
        return redirect('/product/create')->with('message', 'registration success!');
    }
}
这不是正确的方法吗?但我感到困惑的是,这部分是为了显示产品信息,为什么它阻止我上传信息

任何帮助都将不胜感激,因为我尝试了多种方法,但都没有成功

先谢谢你

其他信息 User.php


user()->products()
将是在您的用户模型中创建的一种关系,因此它取决于该关系的设置方式。
403此操作未经授权。
错误,因为您必须授权表单请求,或者编写您自己的授权代码,或者仅返回trueProductRequest
中的
authorize()
方法中的code>。请参阅,您可能错过了
用户
模型中的
products()
关系。这就是调用未定义的方法App\Models\User::products()
的原因。请参阅Hi iamab.in,我已将authorize()方法更改为true,现在正在上载信息!但是,我仍然无法显示产品列表。似乎403和BadMethodCallException是两个不同的问题……嘿,我用正确的User.php编写了代码,现在它开始工作了!非常感谢你对我的帮助!我自己也不会想到这一点。你能在答案部分加上答案,让我选择你的答案吗?
$products = Auth::user()->products()->get();
<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function tests()
    {
        return $this->hasMany('App\Test');
    }

    public function products()
    {
        return $this->hasMany('App\Product');
    }
}