我经常需要执行此查询:
$Op = JobCardOp::where([
['JobCardNum', '=', $JobCardNum ],
['OpNum', '=', $OpNum ]
])->first();
因此,每次我想要一个像以下的函数时,不要写出来:
public function getOp($JobCardNum, $OpNum)
{
$Op = JobCardOp::where([
['JobCardNum', '=', $JobCardNum ],
['OpNum', '=', $OpNum ]
])->first();
return $Op;
}
我可以在我的控制器中打电话。我应该在哪里定义我的功能,目前我只需要在一个控制器中,但如果可能,我可能需要另一个。任何帮助表示赞赏。
答案 0 :(得分:3)
您可以将JobCardOpt模型中的函数定义为static:
public static function getOp($JobCardNum, $OpNum)
{
$Op = static::where([
['JobCardNum', '=', $JobCardNum],
['OpNum', '=', $OpNum]
])->first();
return $Op;
}
在控制器中使用它:
$jobCardOpt = JobCardOpt::getOp(1, 2);
答案 1 :(得分:2)
如果您想要作为静态函数,可以将此方法放在模型上。
public static function getOp($cardNum, $opNum)
{
return static::where([
['JobCardNum', '=', $cardNum],
['OpNum', '=', $opNum]
])->first();
}
// controller
$res = YourModel::getOp($cardNum, $opNum);
或者将查询范围添加到模型
public function scopeGetOp($query, $cardNum, $opNum)
{
return $query->where([
['JobCardNum', '=', $cardNum],
['OpNum', '=', $opNum]
]);
}
// controller
$res = YourModel::with(...)->getOp($cardNum, $opNum)->first();
有点取决于你想要如何使用它。