从laravel中的选择框中的数据库中检索值

时间:2014-04-21 07:03:35

标签: database laravel-4 eloquent

我的表单上有两个选择框。我的第二个选择框值取决于第一个选择框。我想在我的第二个框中从数据库中检索值。怎么解决? 这是我的观点代码

First: {{ Form::select('first', 1, 10) }}       

Second: {{ Form::select('second', $value) }}        

我想在选择第一个选择框值时调用此函数。 这是我的控制器代码

public function getValue()
{       
    $keyword = Input::get('first');    
    $value = [];                    

    $tables= DB::table('table') 
                ->where('first', '=', $keyword)                                                     
                ->get();

    foreach ($tablesas $tables) {
        $value[] = $table->value;           
    }         

    return  View::make('view.index')
            ->with('value', $value);                
}

我应该使用ajax还是javascript。如何解决。请帮助

1 个答案:

答案 0 :(得分:0)

如果您想在第一个值更改时获得第二个值,则需要使用第一个值执行ajax请求。在服务器端,当您获得第一个值时,找到与db中的第一个值匹配的第二个值。然后只返回值(laravel自动转换为json)。

在视图中,

First: {{ Form::select('first', $first, 10, array('id' => 'first')) }}       

Second: {{ Form::select('second', array(), null, array('id' => 'second')) }}

在JS中,

$(document).on('change', '#first', function () {

    var first = $(this).find(':selected').val();

    $.post('ajax/get_second', {first: first}, function (data) {         
        if (data) {
           var html = '';
           $.each(data, function (key, val) {
               html += '<option value="'+key+'">' + val + '</option>';
           }
            $('#second').html(html);
        }
    }, 'JSON');
});

在控制器中,

public function getSecond()
{
     $first = Input::get('first');

     $tables= DB::table('table') 
            ->where('first', $first)
            ->get(array('key', 'value'));

     foreach ($tables as $tables) {
         $result[$table->key] = $table->value ;           
     }

     return $result;
}