【问题标题】:Laravel DB queries help needed需要 Laravel DB 查询帮助
【发布时间】:2018-04-06 18:56:57
【问题描述】:

我是 Laravel 的新手, 理解查询有一些困难

我有两张桌子

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

  2. Leads [id, other some fields, client, agent]

client和agent是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'));
}

怎么做?

在用户模型和潜在客户模型中,我只有默认代码我有代码

如果能得到一些快速帮助将不胜感激

【问题讨论】:

  • 你的要求真的很混乱。据我所知,你是想从经纪人那里看到吗?
  • 嗨,感谢您的快速回复,让我澄清一下。当创建一个新的潜在客户时,它在潜在客户表的代理列中具有当前代理 ID,对于我有 id 的客户也是如此,但需要检索这些客户或代理的名称,并需要在视图中显示它们
  • 尝试更新问题并澄清更多。

标签: php mysql laravel orm eloquent


【解决方案1】:

首先,您需要将列名更改为 agent_idclient_id 而不是 agentclient。否则,您需要相应地更新以下代码。

从你的回答来看,我认为你需要在Leads 模型中做这样的事情:

定义代理和客户的关系

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

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

在每次查询调用潜在客户模型时自动加载它们。

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

完成上述步骤后,您可以简单地列出潜在客户的代理/客户:

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

【讨论】:

  • 非常感谢,看起来是正确的方法,但是当我从控制器返回 $leads 时,我可以看到所有数据,但鉴于没有得到这些数据
  • 对于某些记录,它们可能为空。您需要验证该值是否为空。
  • 我仔细检查了一下,看起来没有数据丢失,但是当我在 foreach 循环的视图中通过 compact('leads') 传递 $leads 变量时,我看到了 $lead->客户端提供 id,而不是客户端数据(对象),我可以在控制器中看到,请问这可能是什么原因?
  • 您说agentclient 字段实际上是用户表中的用户ID。您需要编写$lead->client->name 等。还要检查User 模型的可填充属性。
  • ->name 不可访问,因为 $lead->client 在视图中返回整数。 ErrorException (E_ERROR) 试图获取非对象的属性(查看:F:\xampp7\htdocs\laravel\crm\resources\views\leads.blade.php)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多