programing

라벨 where In 또는 위치인

muds 2023. 8. 29. 21:00
반응형

라벨 where In 또는 위치

필터로 제품을 검색하는 중입니다.

내 코드:

->where(function($query) use($filter)
{
  if(!empty($filter)){
    foreach ($filter as $key => $value) {           
      $f = explode(",", $value);        
      $query-> whereIn('products.value', $f);
    }           
  }
})

쿼리:

and (products.value in (Bomann, PHILIPS) and products.value in (red,white)) 

하지만 필요한 건:

and (products.value in (Bomann, PHILIPS) OR products.value in (red,white)) 

라라벨에도 비슷한 것이 있습니까?

orWhereIn

당신은 단지 검색할 수 있었습니다.whereIn그것을 보기 위해 코어에서 기능합니다.여기 있습니다.이것은 당신의 모든 질문에 답해야 합니다.

/**
 * Add a "where in" clause to the query.
 *
 * @param  string  $column
 * @param  mixed   $values
 * @param  string  $boolean
 * @param  bool    $not
 * @return \Illuminate\Database\Query\Builder|static
 */
public function whereIn($column, $values, $boolean = 'and', $not = false)
{
    $type = $not ? 'NotIn' : 'In';

    // If the value of the where in clause is actually a Closure, we will assume that
    // the developer is using a full sub-select for this "in" statement, and will
    // execute those Closures, then we can re-construct the entire sub-selects.
    if ($values instanceof Closure)
    {
        return $this->whereInSub($column, $values, $boolean, $not);
    }

    $this->wheres[] = compact('type', 'column', 'values', 'boolean');

    $this->bindings = array_merge($this->bindings, $values);

    return $this;
}

세 번째 부울 매개 변수가 있는지 확인합니다.행운을 빌어요.

당신은 있습니다.orWhereIn함수는 Laravel입니다.다음과 같은 매개 변수가 필요합니다.whereIn기능.

설명서에는 없지만 Laravel API에서 찾을 수 있습니다.Laravel 8 또는 WhereIn 설명서를 참조하십시오.

그러면 다음과 같은 이점이 있습니다.

$query-> orWhereIn('products.value', $f);
$query = DB::table('dms_stakeholder_permissions');
$query->select(DB::raw('group_concat(dms_stakeholder_permissions.fid) as fid'),'dms_stakeholder_permissions.rights');
$query->where('dms_stakeholder_permissions.stakeholder_id','4');
$query->orWhere(function($subquery)  use ($stakeholderId){
            $subquery->where('dms_stakeholder_permissions.stakeholder_id',$stakeholderId);
            $subquery->whereIn('dms_stakeholder_permissions.rights',array('1','2','3'));
    });

 $result = $query->get();

return $result;

OUTPUT @input $stakeholderId = 1

//fid로 group_concat(dms_sysholder_commissions.dll)을 선택합니다.dms_stakeholder_permissionss.rights부터dms_stakeholder_permissions어디에dms_stakeholder_permissions.stakeholder_id4 또는 (dms_stakeholder_permissions.stakeholder_id1 그리고dms_stakeholder_permissions.rights(1, 2, 3)에

네.orWhereIn사용할 수 있는 방법입니다.

저는 그것이 당신이 찾고 있는 결과를 줄 것이라고 꽤 확신하지만, 그렇지 않다면 당신은 단순히 사용할 수 있습니다.implode문자열을 생성한 다음 폭발시키는 방법(이것은 배열 구조를 추측한 것입니다):

$values = implode(',', array_map(function($value)
{
    return trim($value, ',');
}, $filters));

$query->whereIn('products.value', explode(',' $values));

네.orWhereIn여기서 절 메서드는 Laravel에 존재합니다.자세한 내용은 아래의 공식 Laravel Query Builder 문서 링크를 참조하십시오.

설명서 링크: https://laravel.com/docs/8.x/queries#additional-where-clauses

아래의 출력을 얻는 방법은 두 가지가 있습니다.

and (products.value in (Bomann, PHILIPS) OR products.value in (red,white))
  1. 사용.orWhereIn
$query = Product::where('color', 'blue')
    ->whereIn('value', ['Bomann', 'PHILIPS'])
    ->orWhereIn('value', ['red', 'white'])
    ->get();

출력:

select * from `products` where `color` = 'blue' and `value` in (Bomann, PHILIPS) OR `value` in (red,white)) 
  1. 사용.orWhere그리고.whereIn
$query2 = Product::where('color', 'blue')
    ->whereIn('value', ['Bomann', 'PHILIPS'])
    ->orWhere(function ($query) {
        $query->whereIn('value', ['Bomann', 'PHILIPS']);
    })
    ->get();

출력:

select * from `products` where `color` = 'blue' and `value` in (Bomann, PHILIPS) OR (`value` in (red,white)) 

예를 들어 whereIn OR whereIn 조건이 여러 개 있고 대괄호를 넣으려면 다음과 같이 수행합니다.

$getrecord = DiamondMaster::where('is_delete','0')->where('user_id',Auth::user()->id);
if(!empty($request->stone_id))
{
    $postdata = $request->stone_id;
    $certi_id =trim($postdata,",");
    $getrecord = $getrecord->whereIn('id',explode(",", $certi_id))
                           ->orWhereIn('Certi_NO',explode(",", $certi_id));     
}
$getrecord = $getrecord->get();

언급URL : https://stackoverflow.com/questions/22758819/laravel-wherein-or-wherein

반응형