Laravel回显NON Auth :: User ID

时间:2019-02-03 19:37:28

标签: php laravel

尝试解决以下问题:

我了解您可以通过 {{Auth :: user()->电子邮件}} 在刀片中回显数据,以获取电子邮件, {{Auth :: user()-> name}} 以获得名称, {{Auth :: user()-> id}} 以获得用户ID等。这是针对当前登录的用户。

但是我要实现的是,如果我以一种基本的单字段形式在文本字段中键入“名称”,是否有任何方法可以使它动态地显示与该“名称”相关的回显用户ID,即使它不是Auth :: User的ID?

例如:用户ID: 1 ,其“名称”为 ROGERHELLO 可以键入“名称” POTATOHEAD 并使其回显页面上可见的相对ID,该ID可能是 5

我已经搜索过,但似乎找不到明确的答案..希望这篇文章将来可以帮助其他人进行类似的查询。

谢谢您的帮助!

3 个答案:

答案 0 :(得分:0)

我了解您希望能够搜索用户。如果是这种情况,请尝试以下操作:

//in Controller
public function search(Request $request)
{
    $keyword = $request->get('search');
    $data = [];

    if (!empty($keyword)) {
        //you can search for anything here
        $data['users'] = User::where('name', 'LIKE', "%$keyword%")
            ->orWhere('email', 'LIKE', "%$keyword%")
            ->orWhere('occupation', 'LIKE', "%$keyword%")
            ->get();
    } else {
        //return a response to require an input 
    }

    return view('users.search', $data);
}

您现在可以在返回的视图(users.search)上显示搜索结果。

答案 1 :(得分:0)

<?php 

// Make an ajax request when you submit the frontend input form
// Send a post parameter 'username'

public function searchByUsername(Request $request)
{
    // Validate
    $request->validate([ 'username' => 'required|string']);

    // Search in username
    $userIds = User::where('name', 'LIKE', '%' . $request->username. '%')
        ->select('id')
        ->get();

    // Return json response for ajax
    return response()->json(compact($userIds), 200);
}

答案 2 :(得分:0)

尝试这种方式。它会很简单地出现

public function search()
    {
        $search_phrase = Input::get('q');
        $search_results = User::where('name', 'like', '%' . $search_phrase . '%')->paginate(6);

        return view('search.users', compact('search_results', 'search_phrase'));
    }

但是您需要使用输入外观:

use Illuminate\Support\Facades\Input;