我经常需要执行以下查询:
$Op = JobCardOp::where([
['JobCardNum', '=', $JobCardNum ],
['OpNum', '=', $OpNum ]
])->first();
所以,与其每次我想要一个函数时都写出来,比如:
public function getOp($JobCardNum, $OpNum)
{
$Op = JobCardOp::where([
['JobCardNum', '=', $JobCardNum ],
['OpNum', '=', $OpNum ]
])->first();
return $Op;
}
我可以调用我的控制器。我应该在哪里定义我的函数,目前我只需要它在一个控制器中,但如果可能的话,我可能需要它在另一个控制器。感谢您的帮助。
您可以将JobCardOpt模型中的函数定义为静态:
public static function getOp($JobCardNum, $OpNum)
{
$Op = static::where([
['JobCardNum', '=', $JobCardNum],
['OpNum', '=', $OpNum]
])->first();
return $Op;
}
在你的控制器中这样使用它:
$jobCardOpt = JobCardOpt::getOp(1, 2);
如果您想将此方法作为静态函数,可以将其放在Model上。
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();
Kinda取决于您想要如何使用它。