пытается извлечь одну запись из таблицы в laravel, используя ajax - PullRequest
0 голосов
/ 23 сентября 2018

вот мой код, который я пишу в файле маршрута

`Route::get('/{username}/ajax-lead', function(){

          $brand_id = Input::get('brand_id');
          $table_data = DB::table('users')->where('brand_id',$brand_id)->get();
          $table_name = $table_data[0]->table_name;
          $table_lastRecords = DB::table($table_name)->get();     
          $columns = Schema::getColumnListing($table_name);
          $table_lastRecords = DB::table($table_name)->get();

            return Response::json($table_lastRecords);
        });`

here is my view file 


            `{{Form::open(array('url'=>'','files'=>true))}} 
            
                client list *
                                  
                    
                        
                           Select Clients 
                        
                        @foreach($brand as $userLeads){
                            brand_id }}">{{ $userLeads->name }}
                        }
                        @endforeach

                    

                

           
            {{Form::close()}}
           
                $('#brand_name').on('change',function(e){
                    // body...
                    console.log(e);

                    var brand_id = e.target.value;

                    //ajax Call
           $.get('/{username}/ajax-lead?brand_id=' + brand_id,function(data){
                        //success data
                        console.log(data);
                    });
                });
            `

Я хочу получить в ответ значение столбца таблицы_имя.Я использую JSON для ответа.

1 Ответ

0 голосов
/ 23 сентября 2018

ОТВЕТ: Самое простое решение - вернуть массив данных, где первое значение - это имя таблицы, а второе - это коллекция lastRecords.Это выглядело бы примерно так:

$responseArray[0] = $table_name;
$responseArray[1] = $table_lastRecords;

return json_encode($responseArray);

Затем, по вашему мнению, вы должны проанализировать ваш ответ Json и позволить table_name = responseData [0] и lastRecords = responseData [1].Конечно, вы также можете использовать нечисловые индексы, чтобы сделать код более читабельным, например responseData ['table_name'], но эта семантика зависит от вас.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

С учетом вышесказанного, есть несколько проблем с вашим кодом, на которые я должен обратить внимание.Вам следует лучше ознакомиться с запросами Eloquent, поскольку их правильное использование значительно упростит ваш код.Например, эти две строки:

$table_data = DB::table('users')->where('brand_id',$brand_id)->get();
$table_name = $table_data[0]->table_name;

Можно переписать так:

$table_name = User::where('brand_id',$brand_id)->first()->table_name;

Но это заставляет меня задать вопрос, есть ли только одна таблица на бренд?Если да, то почему вы храните эту информацию у пользователя, а не в таблице «брендов»?Наиболее разумным способом было бы иметь модель Brands, имеющую столбец table_name, и вы получите имя таблицы с помощью этого простого запроса:

$table_name = Brand::find($brand_id)->table_name;

Кроме того, вам следует избегать выполненияэтот тип работы в вашем файле маршрутов.Все, что не связано конкретно с МАРШРУТОМ пользователя, должно обрабатываться в контроллере или модели.Затем в вашем контроллере вы должны использовать модель User или Brand в своих запросах, импортируя App \ User и App \ Brand.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...