Laravel DB查询需要帮助

时间:2017-10-25 15:36:54

标签: php mysql laravel orm eloquent

我是Laravel的新人, 理解查询时遇到一些困难

我有2张桌子

  1. 用户[id,email,fname,lname]

  2. 潜在客户[id,其他一些字段,客户,代理]

  3. 客户端和代理是users表的id的外键..

    使用以下代码我可以从Leads表中检索数据 但我得到客户= 3 agent = 4这样的东西

    但不是显示那些ID我想从用户表中获取这些ID的名称

    怎么做?

    在控制器中,我现在有这个功能

    /**
     * @return \Illuminate\Http\Response
     */
    public function leads(){
    
        if(Auth::user()->role == 'admin'){
    
            $leads = Leads::all();
    
            // here in the $leads i get datas like ['id' => 1, 'field1' => 'test', 'field2'=> 'test2', 'client_id'=> 2, 'agent_id'=> 3] , but i want to get the names of the client and agent from the user table which we can do in normal sql query by joining but how to do with laravel?
    
        }
    
        return view('leads', compact('leads'));
    }
    

    怎么做?

    用户模型&中的

    Leads模型我只有默认代码我有代码

    如果得到一些快速帮助,

    会很感激

1 个答案:

答案 0 :(得分:0)

首先,您需要将列名更改为agent_id& client_id代替agent& client。否则,您需要相应地更新以下代码。

根据你的回答判断,我认为你需要在Leads模型中做这样的事情:

定义代理商的关系&客户端

public function agent()
{
    return $this->belongsTo(User::class, 'agent_id');
}

public function client()
{
    return $this->belongsTo(User::class, 'client_id');
}

在每次查询Leads模型时自动加载它们。

protected $with = ['agent', 'client'];

执行上述步骤后,您可以通过编写以下内容列出代理商/客户端:

$lead->agent->name;
$lead->client->name;