加入模型 Table Laravel 5.2

Joining Model with Table Laravel 5.2

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

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

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

tbl_deal

tbl_merchant

我当前的 Controller 使用以下代码从交易模型中提取所有交易。

$deals = deals::all();

我想通过 merchant_url_text 限制交易。由于那是在商家 table 中,我需要将其加入现有的交易模型。

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

谢谢。

添加到您的 deals 模型

以下函数(称为 relationship):

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 和 table 名称应该是 deals 而不是 tbl_deal,类似于主键 - 它应该是简单的 id 而不是 deal_id).