首页 > 解决方案 > 未定义的属性:Illuminate\Database\Eloquent\Relations\HasOne::$user_id

问题描述

我只是laravel的初学者,对不起,如果这是一个愚蠢的问题

这是我的控制器:-

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\Profile;
use Auth;



class ProfilesController extends Controller
{

  public function _construct()
  {
    $this->middleware('auth');
  }

  public function create()
  {
    return view('bio');
  }

  public function store(Request $request)
  {
  auth()->user()->profile()->user_id;
    // create Bio
    $profile = new Profile;

    $profile->bio = $request->input('bio');
    $profile->save();
    return redirect('/home');

  }


}

这是我的模型:-

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
  protected $gaurded = [];
protected $fillable = ['user_id', 'bio'];

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

这是我的桌子

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
  protected $gaurded = [];
protected $fillable = ['user_id', 'bio'];

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

这是我的用户模型:-

  public function profile()
    {
      return $this->hasOne(Profile::class);
    }

    public function posts()
    {
      return $this->hasMany(Posts::class);
    }

我收到此错误“未定义的属性:Illuminate\Database\Eloquent\Relations\HasOne::$user_id”我不知道我哪里出错了请帮助我并指导我,如果你能 谢谢

标签: phplaravelrelationship

解决方案


您不能在user_id上调用该属性Illuminate\Database\Eloquent\Relations\HasOne profile()

你可以调用它auth()->user()->profile->user_id

但是,该用户还没有个人资料。需要创建它并使用create方法Illuminate\Database\Eloquent\Relations\HasOne,Laravel 会自动将 foreign_key 构建user_idprofile.

  public function store(Request $request)
  {
      auth()->user()->profile()->create([
         'bio' => $request->input('bio')
      ]);
      return redirect('/home');
  }

推荐阅读