首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义属性: Illuminate\Database\Eloquent\Relations\HasOne::$user_id

未定义属性: Illuminate\Database\Eloquent\Relations\HasOne::$user_id
EN

Stack Overflow用户
提问于 2020-03-27 20:56:21
回答 4查看 2.6K关注 0票数 4

我只是拉拉威尔的初学者,如果这是个愚蠢的问题,对不起

,这是我的控制器:-

代码语言:javascript
复制
<?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');

  }


}

,这是我的模型:-

代码语言:javascript
复制
<?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);
    }
}

这是我的桌子

代码语言:javascript
复制
<?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);
    }
}

这里是我的用户模型:-

代码语言:javascript
复制
  public function profile()
    {
      return $this->hasOne(Profile::class);
    }

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

我得到了这个错误“未定义的属性:,我不知道我哪里出错了,请帮助我,如果你能,感谢,请帮助我并指导我。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-03-28 08:37:16

不能调用属性user_id on Illuminate\Database\Eloquent\Relations\HasOne profile()

你可以用auth()->user()->profile->user_id来称呼它。

但是,用户还没有配置文件。如果需要在Illuminate\Database\Eloquent\Relations\HasOne上创建并使用Illuminate\Database\Eloquent\Relations\HasOne方法,Laravel将自动构建foreign_key user_id to profile

代码语言:javascript
复制
  public function store(Request $request)
  {
      auth()->user()->profile()->create([
         'bio' => $request->input('bio')
      ]);
      return redirect('/home');
  }
票数 2
EN

Stack Overflow用户

发布于 2020-03-28 04:12:22

在您的配置文件模型

代码语言:javascript
复制
public function profile()
{
  return $this->hasOne(Profile::class,"user_id","id");
}

在你的控制器里

代码语言:javascript
复制
  public function store(Request $request)
  {
       echo $id = auth()->user->profile->user_id; 
       $input = $request->all();
       $input['user_id'] = auth()->id(); // OR auth()->user->profile->user_id;
       Profile::create($input);
       return redirect('/home');
  }
票数 1
EN

Stack Overflow用户

发布于 2020-03-27 22:51:13

您需要在用户模型中定义外键和本地密钥,如下所示:

代码语言:javascript
复制
public function profile()
{
  return $this->hasOne(Profile::class,"user_id","id");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60894009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档