微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在laravel-8中为特定用户上传excel文件一般错误:1364字段'user_id'没有默认值

如何解决在laravel-8中为特定用户上传excel文件一般错误:1364字段'user_id'没有默认值

想法是

  1. 一个用户有很多数据,但所有数据都属于一个用户 我正在 fasing sqlSTATE[HY000]:一般错误:1364 字段“user_id”没有认值(sql:插入到 projects (name,detail,{{1} },color,image,logo,updated_at) 值(shahed,kjfs,fsdkf,fdsfsd,fds,2021-05-30 08:45:35,2021 -05-30 08:45:35)) 错误。 如果你需要更多细节,你可以问 这是我的模型 project.PHP
created_at

这是模型 user.PHP

<?PHP

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Project extends Model
{
    use HasFactory;

    protected $fillable = [
        'name','detail','image','color','logo','user_id'
    ];

    public function getUser(){
        return $this->belongsTo(User::class);
    }
}

这是项目表projecttable.PHP

<?PHP

namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Fortify\TwoFactorAuthenticatable;
use Laravel\Jetstream\HasProfilePhoto;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens;
    use HasFactory;
    use HasProfilePhoto;
    use Notifiable;
    use TwoFactorAuthenticatable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    public function getProducts(){
        return $this->hasMany('App\Models\Product');

    }

    public function getProject(){
        return $this->hasMany('App\Models\Project');
    }
    // public function products(){
    //     return $this->hasMany(Product::class);
    // }

    protected $fillable = [
        'name','email','password',];

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

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

    /**
     * The accessors to append to the model's array form.
     *
     * @var array
     */
    protected $appends = [
        'profile_photo_url',];
}

这是 importProject.PHP

   public function up()
    {
        Schema::create('projects',function (Blueprint $table) {
            // $table->('id');
            $table->bigIncrements('id');
            $table->string('name',255)->nullable();
            $table->string('detail',500)->nullable();
            $table->string('color',255)->nullable();
            $table->decimal('image',22)->nullable();
            $table->decimal('logo',22)->nullable();
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamp('created_at')->useCurrent();
            $table->timestamp('updated_at')->nullable();
        });
    }

这是 projectController.PHP

public function model(array $row)
    {
        return new Project([
            'name'     => $row['name'],'detail'    => $row['detail'],'color'    => $row['color'],'image'    => $row['image'],'logo'    => $row['logo'],]);
    }

这是 index.blade.PHP

<?PHP

namespace App\Http\Controllers;

use App\Exports\UsersExport;
use App\Models\Project;
use App\Imports\ProjectsImport;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class ProjectController extends Controller
{
    /**
     * display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $projects = Project::where('user_id',auth()->user()->id)->latest()->paginate(20);
        // $projects = Project::paginate(20);


        return view('projects.index',compact('projects'))
            ->with('i',(request()->input('page',1) - 1) * 5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('projects.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required','detail' => 'required','color' => 'required','image' => 'required','logo' => 'required',]);

        $input = $request->all();
        $input['user_id'] = auth()->user()->id;

        Project::create($input);

        return redirect()->route('project.index')
                        ->with('success','Product created successfully.');

    }

    /**
     * display the specified resource.
     *
     * @param  \App\Models\Project  $project
     * @return \Illuminate\Http\Response
     */
    public function show(Project $project)
    {
        return view('projects.show',compact('project'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Project  $project
     * @return \Illuminate\Http\Response
     */
    public function edit(Project $project)
    {
        return view('projects.edit',compact('project'));
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Project  $project
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request,Project $project)
    {
        $user_id =  Auth::user()->id ;

        $request->validate([
            'name' => 'required','logo' => 'required'
        ]);

        $input = $request->all();

        $project->update($input);

        return redirect()->route('project.index')
                        ->with('success','Product updated successfully');
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Project  $project
     * @return \Illuminate\Http\Response
     */
    public function destroy(Project $project)
    {
        $project->delete();

        return redirect()->route('projects.index')
            ->with('success','Project deleted successfully');
    }

    public function importProject()
    {
        Excel::import(new ProjectsImport,request()->file('file'));

        return back()->with('success','Project created successfully.');
    }

    public function export()
    {
        return Excel::download(new UsersExport,'projects.xlsx');
    }
}

解决方法

像这样在导入项目中提供 auth 值 :)

public function model(array $row)
    {
        return new Project([
            'name'     => $row['name'],'detail'    => $row['detail'],'color'    => $row['color'],'image'    => $row['image'],'logo'    => $row['logo'],'user_id' => auth()->user()->id
        ]);
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。