【发布时间】:2020-12-04 14:49:53
【问题描述】:
我有这个功能:
public function referenciaDuplicada($referencia , $compra_id = null){
if( $compra_id ){
return Compra::where('referencia',$referencia)->where('id','!=',$compra_id)->count();
}
return Compra::where('referencia',$referencia)->count();
}
这是为了防止用户在 'referencia' 值上创建具有重复性的 Compra。
我在这里使用它:
public function update(UpdateRequest $request){
$subotal_articulos = $this->subotalArticulos($request->articulos);
$referencia_duplicada = $this->referenciaDuplicada($request->orden_compra['referencia'],$request->orden_compra['po_id']);
$remision_duplicada = $this->remisionDuplicada($request->orden_compra['remision'],$request->orden_compra['po_id']);
if( $referencia_duplicada > 0 ){
return response()->json(['errors' =>
['El número de Referencia ya existe. Por favor, ingrese una nueva Referencia.'],
'data' => null
], 422);
}
当前用户正在创建 'Compra',但如果 Compra 被取消,您应该能够使用 'referencia' 值,因为 Compra 已被删除。但是,即使取消了 Compra,用于该 Compra 的“referencia”也不能再使用了。
我想添加一个条件来验证,当 Compra 'estatus' 值为 'aprobado' 时,用户无法继续并抛出上述错误.
【问题讨论】:
-
只需在
referenciaDuplicada查询生成器中添加条件 -
是的,但是应该如何输入 cpndition?我正在尝试使用 whereNotIn 但我不知道在哪里写它。它应该是: whereNotIn('estatus' , ['rechazada' , 'cancelada'])
-
这能回答你的问题吗? Laravel Eloquent "WHERE NOT IN"