Php laravel无法将记录保存到数据库

Php laravel无法将记录保存到数据库,php,laravel,laravel-5,eloquent,save,Php,Laravel,Laravel 5,Eloquent,Save,我正在与laravel建立一个博客系统 现在我有了一个blogger表,它有一个名称、电子邮件地址和密码 除了默认的account表之外,我还想保存一个配置文件图像和简介。 在我的情况下,它们属于blogger表。 但我无法保存这两条记录 我不明白为什么不能将配置文件记录插入数据库 我的用户角色是一个博主 我可以在url上看到?\u标记 博客表 Schema::create('bloggers', function (Blueprint $table) { $table-

我正在与laravel建立一个博客系统

现在我有了一个blogger表,它有一个名称、电子邮件地址和密码

除了默认的account表之外,我还想保存一个配置文件图像和简介。 在我的情况下,它们属于blogger表。 但我无法保存这两条记录

我不明白为什么不能将配置文件记录插入数据库

我的用户角色是一个博主

我可以在url上看到?\u标记

博客表

Schema::create('bloggers', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
博客表

Schema::create('blogs', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('bloggers');
            $table->string('image');
            $table->string('introduction');
            $table->timestamps();
        });
blogger.php

public function blogs()
    {
        return $this->hasMany(Blog::class, 'user_id');
    }
blog.php

public function user(){
        return $this->belongsTo(Blogger::class, 'user_id');
    }
bloggersController.php

public function store(Request $request, Blogger $blogger_id){
        $blogger_id = DB::table('bloggers')->where('id', $blogger_id)->get();

        Auth::guard('blogger')->user();

        if($request->hasfile('image')){
            $file = $request->file('image');
            $ext = $file->getClientOriginalExtension();
            $filename = time().'.'.$ext;
            $file->move('bloggers/', $filename);

            $blog = Blog::updateOrCreate(
                  ['user_id' => $blogger_id],
                  [
                      'image'=>$filename,
                      'introduction' => $request->introduction,
                  ]
              );
      }
       return view('bloggers.create')->with('bloggers', Blogger::all())->with('blogs', Blog::all());

    }
web.php

Route::get('/create', 'BloggersController@store')->name('blogs.store');
create.blade.php

<form action="{{ route('blogs.store') }}" enctype="multipart/form-data">
@csrf
 <img src="{{asset('blog-image/alexandre-chambon-zxmSX2-GQBc-unsplash.jpg')}}" alt="card-background" class="card-img">
            <div class="image-preview" id="imagePreview">
                @if(empty(Auth::guard('blogger')->user()->blog->image))
                <img src="{{asset('avatar/avatar.png')}}" id="image-preview__image" alt="avatar">
                @else
                <img src="{{asset('bloggers/')}}/{{ Auth::guard('blogger')->user()->blog->image}}"  id="preview" alt="profile image">
                @endif
            </div>


            <input type="text" class="name" value="{{ Auth::guard('blogger')->user()->name }}" name="name">

            <textarea name="introduction" id="" cols="30" rows="10" class="profile">
            @if(!empty(Auth::guard('blogger')->user()->blog->introduction)){{ Auth::guard('blogger')->user()->blog->introduction }}@endif
            </textarea>



            <div class="preview">
                    <input type="file" id="file" class="file1" accept="image/*" name="image">
                <label for="file">
                    Add profile photo
                </label>
            </div>
<button type="submit" id="register">Register</button>
</form>

@csrf
@if(空(Auth::guard('blogger')->user()->blog->image))
@否则
user()->blog->image}“id=“preview”alt=“profile image”>
@恩迪夫
@如果(!empty(Auth::guard('blogger')->user()->blog->introduction)){{Auth::guard('blogger')->user()->blog->introduction}@endif
添加个人资料照片
登记


您的模型的
属性中的那些列是可填充的吗?
是的。我有一个受保护的$fillable。为什么Auth::guard('blogger')->user();未分配给变量?@YoheiUmezu方法名称中有输入错误。它应该是
$request->hasFile
而不是
$request->hasFile
。此外,控制器函数还有第二个参数作为Blogger实例,但如果要将其传递给路由,则应该是字符串。此外,您应该提交图像(文件)使用POST或PUT请求。@谢谢,我修复了hasFile。您的意思是我需要从get更改为POST in路径吗?您的模型的
属性中的那些列是可填充的吗?是的。我有一个受保护的$fillable。为什么Auth::guard('blogger')->user();未分配给变量?@YoheiUmezu方法名称中有输入错误。它应该是
$request->hasFile
而不是
$request->hasFile
。此外,控制器函数还有第二个参数作为Blogger实例,但如果要将其传递给路由,则应该是字符串。此外,您应该提交图像(文件)使用POST或PUT请求。@谢谢,我已修复为hasFile。您的意思是我需要在路径中从get更改为POST吗?谢谢。但我在尝试获取非对象的属性“id”时遇到新错误。您是否转储了$blogger\u id?它可能为空转储($blogger\u id);不,我仍然有Blogger$Blogger\u id。好吧,我明白了,因为你使用依赖注入(Blogger$Blogger\u id),你可以简单地使用公共函数存储(Request$Request,Blogger$Blogger),然后使用$Blogger\u id=$Blogger->id;那么你的意思是我需要替换$Blogger\u id=DB::table('bloggers')->where('id',$Blogger\u id)->value('id'));to$blogger_id=$blogger->id;?谢谢。但我在尝试获取非对象的属性“id”时遇到了新错误。您是否转储了$blogger_id?它可能是空转储($blogger_id);不,我仍然有blogger$blogger_id。好的,我明白了,因为您正在使用依赖项注入(blogger$blogger_id),您可以简单地使用公共函数存储(Request$Request,Blogger$Blogger)然后$Blogger_id=$Blogger->id;那么您的意思是我需要将$Blogger_id=DB::table('bloggers')->where('id',$Blogger_id)->value('id');替换为$Blogger_id=$Blogger->id?
public function store(Request $request, Blogger $blogger){

         // If you are using route model you already have a model instance
        $blogger_id = $blogger->id

        //Auth::guard('blogger')->user();

       if($request->hasFile('image')){

           $file = $request->file('image');
           $ext = $file->getClientOriginalExtension();
           $filename = time().'.'.$ext;
           $file->move(public_path("bloggers"), $filename);
           $path = '/bloggers/' . $filename;

           $blog = Blog::updateOrCreate(
              ['user_id' => $blogger_id],
              [
                 'image'=>$filename,
                 'introduction' => $request->introduction,
              ]
          );
      }
      return view('bloggers.create')->with('bloggers', Blogger::all())->with('blogs', Blog::all());

}