我在Laravel中创建了一个模型。
class deals extends Model
{
//
protected $table = 'tbl_deal';
}
现在我想使用此模型在Controller中检索数据。但是,从此模型中提取的数据也需要受另一个表中的列的约束。以下是基本架构
tbl_deal
tbl_merchant
我当前的Controller有以下代码从交易模型中提取所有交易。
$deals = deals::all();
我想通过merchant_url_text约束交易。由于这是在商家表中,我需要加入现有的交易模型。
有关如何在我的控制器中执行此操作的任何帮助,以及这是解决此类问题的正确方法。
感谢。
答案 0 :(得分:2)
添加到您的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
,并且表名应为{{1}而不是deals
,类似于主键 - 它应该是简单的tbl_deal
而不是id
)。