2

我在 Laravel 中创建了一个模型。

class deals extends Model
{
//
protected $table = 'tbl_deal';
}

现在我想使用这个模型来检索我的控制器中的数据。但是,从该模型中提取的数据也需要受另一个表中的列的约束。下面是基本架构

tbl_deal

  • 交易ID
  • 商家 ID
  • 交易文本

tbl_merchant

  • 商家 ID
  • 商家网址文本

我当前的控制器具有以下代码来从交易模型中提取所有交易。

$deals = deals::all();

我想通过 Mercer_url_text 限制交易。由于那是在商家表中,我需要将它与现有的交易模型一起加入。

关于如何在我的控制器中执行此操作以及这是否是解决此类问题的正确方法的任何帮助。

谢谢。

4

1 回答 1

2

添加到您的deals模型

以下函数(称为关系):

public function merchant()
{
   return $this->belongsTo(Merchant::class, merchant_id);
}

现在您将能够使用商家与商家达成所有交易

$deals = deals::with('merchant')->get();

例如显示第一个使用:

$deal = $deals->first();
echo $deal->merchant->merchant_url_text;

但是,要使用它,您还需要创建Merchant模型,并且不会使用此方法join

如果您想在这种情况下使用简单连接而不是关系,您可以使用:

$deals = deals::selectRaw('tbl_deal.*, tbl_merchant.merchant_url_text')
              ->leftJoin('tbl_merchant','tbl_deal.merchant_id','=','table_merchant.merchant_id')->get();

现在要显示第一个商家文本,您可以使用:

$deal = $deals->first();
echo $deal->merchant_url_text;

我强烈建议在编写任何代码之前阅读 Laravel 文档以完全理解基本的 Laravel 概念(例如,按照约定模型名称应该是Deal代替,deals表名应该是deals代替tbl_deal,主键类似 - 它应该是简单id的而不是deal_id)。

于 2015-12-22T20:18:29.580 回答