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

我正在尝试获取创建帖子女巫的用户名是(问题模型),我不知道出了什么问题我在 laravel 文档中尝试了Eager Loading ,我已经检查了这些问题 1 问题 2并且仍然为 null 或者Trying to get property 'name' of non-object如果我用dd( $problem->user->name);


我使用 laravel 5.8


问题Controller.php

namespace 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(模型)

<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class Problems extends Model

{

    

    public function user()

    {

        return $this->belongsTo('App\User');

    }

}


Usre.php(模型)

<?php


namespace 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获取创建帖子的用户的名称以将其显示在表格中



慕慕森
浏览 91回答 1
1回答

神不在的星期二

您的用户模型正在问题表中寻找一个user_id字段以使关系正常工作。Laravel 使用模型名称 + '_id' 自动为模型关系创建使用蛇形案例的关系。如果您将问题表上的外键更改为,user_id而不是addedBy,这将按原样工作。或者,如果您希望保留addedBy密钥,则需要告诉 Laravel 您使用的是非标准密钥。因此,在您的用户模型上:public function problem(){&nbsp; &nbsp; return $this->hasMany('App\Problems', 'addedBy');}应该做的伎俩。请参阅此处的文档。不幸的是,您可能还没有在桌子上定义实际的 FK。在foreign指定之前,我希望看到如下内容:$table->unsignedInteger('user_id');$table->foreign('user_id')->references('id')->on('users');或者如果使用更新版本的 Laravel:&nbsp;$table->unsignedBigInteger('user_id');&nbsp;$table->foreign('user_id')->references('id')->on('users');迁移文档在此处适用于V6 。
打开App,查看更多内容
随时随地看视频慕课网APP