簡體   English   中英

使用 Laravel model 關系從具有外鍵的 2 個表中獲取數據

[英]Get data from 2 tables with a foreign key using Laravel model relationships

我有 2 個表 1) 用戶 2) user_companies。 一個用戶屬於或擁有一個公司,一個公司有很多用戶。 這就是我確定人際關系的方式。 如何為每個用戶提取公司數據? 嘗試讀取字符串上的屬性“company”——這是我在設置時收到的錯誤。

這是我到目前為止嘗試過的方法和許多其他組合,但似乎無法弄清楚如何顯示存儲在 company 列下的 user_companies 表中的公司名稱。 不知道我在這里錯過了什么。

用戶 model

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

公司 model

    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');
        });

首先,您應該將用戶與公司的關系更改為belongsTo

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

然后使用with()急切地加載它

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

我通過執行以下操作解決了這個問題。

用戶 model

public function company() :BelongsTo
{
    return $this->belongsTo(Company::class, 'user_companies');
}

用戶 controller

 public function profile(User $user, Company $company)
{
  
    $company = Company::where('id', $user->company)->first();
    return view('admin.users.profile', compact('user', 'company'));
}

輪廓刀片文件

{{ $company->name  }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM