문제

내 Eloquent 컬렉션에 "editable"이라는 추가 열을 추가하고 싶습니다.일부 모델에서 실행하는 각 쿼리에는 "편집 가능"이 포함되어야 합니다.'편집 가능'은 원시 쿼리를 기반으로 true 또는 false를 표시합니다.

따라서 내 모델의 각 쿼리에서 실행되어야 하는 쿼리가 있습니다.내 컬렉션에 추가 열을 추가합니다."편집 가능" 값은 원시 쿼리에 의해 결정됩니다.

이를 수행하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

당신은 addSelect() 사용자 정의 속성을 포함하도록 쿼리 체인에 메서드를 추가합니다.

다음과 같은 것

$results = YourModelClass::select("*")
    ->addSelect(DB::raw("IF(condition,1,0) AS editable"))
    ->get();

위의 경우에는 condition 쿼리의 일부로 행별로 평가되는 관련 SQL 문을 사용합니다.그 말이 사실이라면, editable = 1 그리고 만약 거짓이라면 editable = 0 컬렉션에 반환된 각 행에 대해

편집하다:방금 네가 이걸 켜길 원하는 걸 봤어 모든 쿼리를 수행하므로 모델에 대한 전역 범위/특성이 필요할 수 있지만 추가 속성을 포함하는 위의 기술이 올바른 기술이어야 합니다.

전역 범위 추가에 대한 문서는 복사/붙여넣지 않을 것입니다. 이는 핵심 Laravel 문서에 있으며 여러분이 찾을 수 있을 것이라고 확신합니다.

다른 팁

사용자 정의 getter를 모델에 추가 할 수 있습니다.

public function getEditableAttribute()
{
    /* return result from your raw query here */;
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top