为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取发布帖子的用户名(laravel 5.8)

如何获取发布帖子的用户名(laravel 5.8)

PHP
慕慕森 2022-07-16 18:18:47
我正在尝试获取创建帖子女巫的用户名是(问题模型),我不知道出了什么问题我在 laravel 文档中尝试了Eager Loading ,我已经检查了这些问题 1 问题 2并且仍然为 null 或者Trying to get property 'name' of non-object如果我用dd( $problem->user->name);我使用 laravel 5.8问题Controller.phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\User;use App\Problems ;use App\Rules\Checkbox;use Validator;[...] public function index()     {        //$users_row_num = User::count();       // $problems_row_num = Problems::count();       $problems = Problems::all();               foreach ($problems as $problem) {        /* Here should get name to send with view but I get null         * if I try  $problem->user->name I get Trying to get property 'name' of non-object because user is null          */            dd( $problem->user);         }               return view('problems.index', [            'problems' => $problem,            'user_numder' => $users_row_num,            'problem_number' => $problems_row_num,        ]);    }[...]Problems.php(模型)<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class Problems extends Model{        public function user()    {        return $this->belongsTo('App\User');    }}Usre.php(模型)<?phpnamespace App;use Illuminate\Notifications\Notifiable;use Illuminate\Contracts\Auth\MustVerifyEmail;use Illuminate\Foundation\Auth\User as Authenticatable;class User extends Authenticatable{[...] public function problem()    {        return $this->hasMany('App\Problems');    }[...]}index.blade.php @foreach ($problems as $problem)                            <tr>                                <td>{{ $problem->accountNumber }}</td>                                <td>{{ $problem->accountName }}</td>                                <td>{{ $problem->accountEmail }}</td>                                <td>{{ $problem->date }}</td>                                <td>{{ $problem->problem }}</td>我想用来$problem->user->name获取创建帖子的用户的名称以将其显示在表格中
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您的用户模型正在问题表中寻找一个user_id字段以使关系正常工作。Laravel 使用模型名称 + '_id' 自动为模型关系创建使用蛇形案例的关系。


如果您将问题表上的外键更改为,user_id而不是addedBy,这将按原样工作。


或者,如果您希望保留addedBy密钥,则需要告诉 Laravel 您使用的是非标准密钥。因此,在您的用户模型上:


public function problem()

{

    return $this->hasMany('App\Problems', 'addedBy');

}

应该做的伎俩。请参阅此处的文档。


不幸的是,您可能还没有在桌子上定义实际的 FK。在foreign指定之前,我希望看到如下内容:


$table->unsignedInteger('user_id');

$table->foreign('user_id')->references('id')->on('users');

或者如果使用更新版本的 Laravel:


 $table->unsignedBigInteger('user_id');

 $table->foreign('user_id')->references('id')->on('users');

迁移文档在此处适用于V6 。


查看完整回答
反对 回复 2022-07-16
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信