当前位置: 首页 > 知识库问答 >
问题:

未定义的属性:Illumb\Database\Eloquent\Relations\BelongsTo::$name laravel 5.4

景德海
2023-03-14

嗨,下面是我的亲戚

用户模型

   public function loginlogout()
    {
        $this->HasMany("App\Models\LoginLogoutLogs");
    }

这是我的LoginLogs模型

  public function users()
    {
        return $this->belongsTo('App\Models\User');
    }

我试图访问名称从用户这样

 $loginLogoutLogs = LoginLogoutLogs::all();
        foreach($loginLogoutLogs as $loginLogoutLog){
            dd($loginLogoutLog->users()->name);
        }

但我得到了这个错误

未定义的属性:照亮\数据库\雄辩\关系\属于::$name

编辑添加模型

<?php

namespace App\Models;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
use Session;
use Illuminate\Support\Facades\DB;

class User extends Authenticatable
{
    use Notifiable;
    use EntrustUserTrait;

    protected $table = 'tbl_users';
    protected $primaryKey = 'id';
    protected $guarded = ['id'];
    const API = 'api';
    const WEB = 'web';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'last_login', 'Address', 'Age', 'DateOfBirth', 'created_by', 'deleted_by'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'is_admin' => 'boolean',
    ];

    public function isAdmin()
    {
        return $this->is_admin;
    }

    static function GetUserNamebyID($id)
    {
        $name = User::select("name")->where(["id" => $id])->pluck('name');
        if (isset($name[0])) {
            return $name[0];
        } else {
            return '';
        }
    }



    public function loginlogout()
    {
        $this->HasMany("App\Models\LoginLogoutLogs", 'userID');
    }

    public function company()
    {
        $this->HasMany("App\Models\Company");
    }
}

现在是LoginLogout模型

<?php


namespace App\Models;

use Illuminate\Notifications\Notifiable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
use Illuminate\Database\Eloquent\Model;
use Session;
use Illuminate\Support\Facades\DB;

class LoginLogoutLogs extends Model
{
    use Notifiable;
    use EntrustUserTrait;

    protected $table = 'tbl_users_logs';
    protected $primaryKey = 'id';
    protected $guarded = ['id'];
    const API = 'api';
    const WEB = 'web';


    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'userID','is_accpeted','type','addedFrom'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'is_admin' => 'boolean',
    ];

    public function isAdmin()
    {
        return $this->is_admin;
    }

    // change company to hasmany

    public function user()
    {
        return $this->belongsTo('App\Models\User');
    }

}

共有3个答案

松思源
2023-03-14

您需要更改您与用户的关系,在LoginLogoutLogs中添加外键:

public function user()
{
    return $this->belongsTo('App\Models\User', 'userID');
}

还要确保调用用户insted的用户

$loginLogoutLogs = LoginLogoutLogs::all();
foreach($loginLogoutLogs as $loginLogoutLog){
    dd($loginLogoutLog->user->name);
}

如果要执行“快速加载”,请使用:

$loginLogoutLogs = LoginLogoutLogs::with('user')->get();
foreach($loginLogoutLogs as $loginLogoutLog){
    dd($loginLogoutLog->user->name);
}
江宏放
2023-03-14

简单修复:

$loginLogoutLogs = LoginLogoutLogs::all();
foreach($loginLogoutLogs as $loginLogoutLog){
    dd($loginLogoutLog->users->name);
}

您希望访问关系实体,而不是关系模型

通过使用users(),您的代码认为您试图在users模型上调用name()方法,而不是在loginLogs类上调用users方法。

施念
2023-03-14

简单地改变你的部分

dd($loginLogoutLog->users()->name);

dd($loginLogoutLog->users->name);

拆下用户的支架,这很容易修复。这里我们得到的是一个属性,而不是一个函数。。。。(尽管在模型中定义为功能)

 类似资料:
  • 我无法将结果附加到查询中。我正在使用页面上的类别筛选结果,并尝试添加分页。当用户单击类别时,只应显示与类别相关的产品,在分页时,我希望保留所选类别。我得到了这个错误: Facade\Ignition\Exceptions\ViewException调用未定义的方法Illumb\Database\Eloquent\Builder::appends()(视图:D:\Xampp\htdocs\Proje

  • 我正在尝试返回属于文件路由中相同案例的多个会话。php: 控制器:: SessionController.php: 模型类:: LawSession.php: 模型类:: LawCase.php: 我得到了这个错误: 关系方法必须返回类型为照明\数据库\雄辩\关系\关系的对象

  • 我有3个DB表,我没有在其中任何一个表上添加任何关系。然后我编写了以下代码: 它应该创建一个新用户,然后查看谁邀请了他,然后与邀请者创建一个共享记录。 但是当我测试它时,我得到了一个错误: 逻辑异常 关系方法必须返回类型为照明\数据库\雄辩\关系\关系的对象 打开:/home/oneinfin/public\u html/diasis/vendor/laravel/framework/src/il

  • 我正在尝试联系许多对许多,在两个模式“培训和培训课程”,所以我做了第三个模式“课程”,以尝试关系1对许多。但是我得到了一个错误: null TypeError:无法读取对象上未定义得属性“belongsto”。(c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppDatabaseDat

  • 我正在使用Laravel 5.8,在这个项目中,我想从数据库中的一个表中删除一些数据,所以我在Blade上对其进行了编码: 这是路线: 这是WalletController的控制器销毁方法: 但是一旦我运行这个,我就会收到这个错误消息: 方法照亮\数据库\雄辩\集合::de不存在。 那么这里出了什么问题?我如何解决这个问题?

  • 我有一个注释表和用户表,其关系为:user- 我的其他模型没有任何问题与Has很多关系,然而,评论模型有一个问题,我尝试的每一件事(即使我使用Has很多只是为了看看它是否会有不同的错误)。 下面是注释模型。 以下是用户表: 这是评论表 最后,当我调用$comment时- 谢谢