1
일련의 방문 페이지를 검색하여 결과를 반환해야합니다. 내가 뭔가를 검색하는 경우, 그것이 내가 검색 한 내용을 반환하고, 나는 상태를 기준으로 필터링 할 경우 상태 괜찮 것을 반환문자열 및 상태를 사용하여 웅변으로 검색하기
/**
* @var \Illuminate\Database\Eloquent\Builder
*/
private $query;
/**
* @param string $status
* @param string $search
* @param int $offset
* @return \Illuminate\Database\Eloquent\Collection
*/
public function getLandingPageListing($status = 'all', $search = '', $offset = 0)
{
$this->query = $this->model->newQuery();
$this->setRelationship();
$this->setStatus($status);
$this->setSearch($search);
return $this->getLandingPages();
}
private function setRelationship()
{
$this->query->with('message');
}
/**
* @param string $status
*/
private function setStatus($status)
{
if ($status !== 'all') {
$this->query->where('lp_status', $status);
}
}
/**
* @param string $search
*/
private function setSearch($search)
{
if ($search !== '') {
$this->query->where('lp_title', 'LIKE', '%' . $search . '%');
$this->query->orWhere('lp_description', 'LIKE', '%' . $search . '%');
$this->query->orWhere('lp_domain', 'LIKE', '%' . $search . '%');
$this->query->orWhereHas('message', function ($query) use ($search) {
$query->where('message_subject', 'LIKE', '%' . $search . '%');
});
}
}
/**
* @return \Illuminate\Database\Eloquent\Collection
*/
private function getLandingPages()
{
return $this->query->get();
}
: 현재이 코드가 있습니다. 그러나 필터링하고 검색 할 때 작동하지 않고 마지막 동작 만 반환합니다.
내가 활성 상태로 필터링한다고 가정하면 모든 활성 방문 페이지가 반환됩니다. 그런 다음 해당 활성 페이지에서 '예제'를 검색하면 활성 상태 인 '예제'만 반환됩니다.
어떻게 해결할 수 있습니까?
이것은 작동합니다. 그러나 필터를 변경하면 실제 검색이 기억 나지 않지만 조금만 더 살펴볼 것입니다. 도움을 주셔서 감사합니다. :) – Albert