不显示搜索结果

时间:2019-05-05 10:29:55

标签: laravel search

我有一个消息传递模块,客户和治疗师可以在其中进行交互。我的收件箱中包含客户名称。现在,我是治疗师,在我的收件箱中显示了我已沟通的客户。我想按名字或姓氏搜索特定客户端的名称。但这并不符合我想要的方式。我的代码有问题吗?

控制器

public function findName(Therapist $therapists, Request $request)
{
    $query = Therapist::query();

    $therapist = $query->whereUserId(Auth::user())->with('user');

    $therapist->with([
        'contacts' => function ($q) use ($request) {
            $q->when($request->name, function ($q) use ($request) {
                $q->whereHas('client', function ($q) use ($request) {
                    $q->whereRaw('CONCAT(fname, " ", lname) LIKE "%'.$request->name.'%"');
                });
            })
            ->with('client.user')
            ->latest();
        },
    ]);

    $therapist = $therapist->first();

    return view('therapist.message', compact('contacts'));
}

这是我的观点。

<div class="headind_srch">
    {!! Form::open(['url' => url()->current(), 'method' => 'get']) !!}
    <div class="row">
        <div class="col-md-8">
            {!! Form::inputGroup('text', null, 'name', request()->name ?? null, ['placeholder' => 'Client Name']) !!}
        </div>
        <div class="col-md-4">
            <button type="submit" class="btn pull-right"><i class="ti-search"></i></button>
        </div>
    </div>
    {!! Form::close() !!}
</div>
<div class="inbox_chat">
    @foreach($contacts AS $contact)
        <div class="chat_list {{ $recipient == $contact->user_id ? 'active_chat' : '' }}">
            <div class="chat_people align-items-center d-flex"> <!--h-->
                <div class="incoming_msg_img">
                    <img src="">
                </div>
                <div class="chat_ib">
                    <div class="form-row">
                        <label onclick="javascript:window.location.href = '{{ route('therapist.index', $contact->user_id) }}'"
                               style="cursor:pointer;">
                            {{ $contact->fullname }}
                            &nbsp;
                            @if(optional($threadList->get($contact->user_id))->unseen_count)
                                <div class="badge badge-pill badge-secondary chat_date">
                                    {{ optional($threadList->get($contact->user_id))->unseen_count  }}
                                </div>
                            @endif
                        </label>
                    </div>
                </div>
                <div class="right_side_btn" id=""> <!--s-->
                    <div class="dropdown" style="cursor:pointer;">
                        <a data-id="{{$contact['id']}}" id="dropdownMenu1" data-toggle="dropdown" aria-expanded="false">
                            <i class="fas fa-cog"></i>
                        </a>
                        <div class="dropdown-menu" aria-labelledby="dropdownMenu1">
                            <li>
                                <a data-toggle="modal" data-target="#view-modal-{{$contact['id']}}">
                                    <button type="submit"
                                            style="cursor:pointer; border: none; background-color: white;">
                                        Delete thread
                                    </button>
                                </a>
                            </li>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    @endforeach
</div>

我希望它通过按名字或姓氏搜索来显示客户端的名称。实际结果显示所有可用的可用用户。

1 个答案:

答案 0 :(得分:0)

尝试声明变量$ contacts

$query = Therapist::query();

$therapist = $query->whereUserId(Auth::user())->with('user');

$therapist->with([
    'contacts' => function ($q) use ($request) {
        $q->when($request->name, function ($q) use ($request) {
            $q->whereHas('client', function ($q) use ($request) {
                $q->whereRaw('CONCAT(fname, " ", lname) LIKE "%'.$request->name.'%"');
            });
        })
        ->with('client.user')
        ->latest();
    },
]);
$contacts = $therapist->first()->contacts;
return view('therapist.message', compact('contacts'));