使用Laravel模型关系从具有外键的2个表中获取数据

dm7nw8vv  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(186)

我有2个表1)users 2)user_companies。一个用户属于或拥有一个公司,一个公司拥有多个用户。这就是我确定关系的方法。如何为每个用户提取公司数据?尝试读取字符串上的属性“company”-这是我的设置收到的错误。
这是我到目前为止尝试过的方法和许多其他的组合,但是似乎不知道如何显示存储在user_companies表中company列下的公司名称。不知道我在这里错过了什么。
用户模型

// Relationship between User and Company
    public function company()
    {       
        return $this->hasOne(Company::class, 'id','company_id');
        //return $this->belongsTo(Company::class, 'company_id');
    }

公司模型

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

用户控制器

public function profile(User $user, Company $company)
    {
        $company = Users::with(['company']);
        //$company = Company::with('user')->find('33');
        
        return view('admin.users.profile', compact('user', 'company'));
    }

刀片锉

{{ $user->company->company }}

迁移文件(刚添加新列FK)

Schema::table('users', function (Blueprint $table) {

            $table->integer('company_id')->nullable()->unsigned();
            $table->foreign('company_id')
            ->references('id')
            ->on('user_companies')
            ->onDelete('cascade');
        });
hjzp0vay

hjzp0vay1#

首先,您应该将用户与公司的关系更改为belongsTo

// User.php
public function company() :BelongsTo
{
    return $this->belongsTo(Company:;class, 'company_id');
}

然后使用with()立即加载它

User::with('company')->get();

相关问题