如何使用laravel4
编写下面的mysql查询有两张桌子 表1是fee_category,其中包含字段:
id | Category
1 | A
2 | B
3 | C
4 | D
表2是带字段的费用:
id | std_id | particularID | CategoryID | assign | amount
1 | 1 | 1 | 1 | 0 | 1000
2 | 1 | 1 | 2 | 1 | 12000
3 | 1 | 2 | 3 | 0 | 3000
4 | 1 | 2 | 4 | 0 | 10
5 | 2 | 1 | 2 | 0 | 100
6 | 2 | 2 | 3 | 0 | 120
我想在laravel4
中写下面的查询SELECT fee_category.id
, fee_category.Category
, X.std_id
, X.particularID
, X.CategoryID
, X.assign
, X.amount
FROM fee_category
LEFT JOIN
(SELECT * FROM fee_charge
WHERE fee_charge.std_id = 1
AND fee_charge.particularID = 1) AS X
ON x.CategoryID = fee_category.id
我的尝试是:
DB::table('fee_category')
->leftJoin((function ($query) use ($std_id, $particularID) {
$query->DB::raw("(SELECT * FROM fee_charge
WHERE fee_charge.std_id = $std_id
AND fee_charge.particularID = $particularID) AS X"
}), function($join)
{$join->on('fee_category.id', '=', 'X.CategoryID');})
->select('fee_category.id', 'fee_category.Category', 'X.std_id'
, 'X.particularID', 'X.CategoryID', 'X.assign', 'X.amount', 'X.dateOfCharge', 'X.dueDate'
)
->get();
以T_PAAMAYIM_NEKUDOTAYIM
获取错误答案 0 :(得分:0)
为什么不使用Eloquent ORM? https://laravel.com/docs/4.2/eloquent
您将拥有一个名为“FeeCharges”的口才,其外键的ID为“FeeCategory”。
在FeeCharges eloquent模型中,使用“belongsTo”方法将外键“CategoryID”与模型相关联,您必须使用“category_id”重命名该列。
在Laravel 4中
public function category() {
return $this->belongsTo('FeeCategory');
}
因此,当我们在FeeCharges模型中调用“类别”方法时(例如,FeeCharges :: find(1) - >类别),这将返回相关的类别记录。
用雄辩的方式构建你的查询将非常简单。 在您的情况下,下面的示例将为您完成工作:
$objects = FeeCharges::with('category')
->whereRaw('std_id = '.$std_id.' and particularID ='.$particularID)
->get();
就是这样!