2

我正在尝试在 Laravel 中查看特定用户的信息。从下拉菜单中选择用户。我正在尝试使用 jQuery 显示此用户的信息。

这是下拉列表的代码:

{{ Form::label('Field Force Select:' ) }}
<select name="field_force" id="ffID">
    <option value=""> --- Please Select a Field Force --- </option>
    @foreach($users as $user)
        <option value="{{ $user->id }}">
          {{ $user->first_name.' '.$user->last_name }}
        </option>
    @endforeach
</select>  

这是路由文件中的代码$users

public function getAccount() {
    $group = Sentry::findGroupByName('Field Force');
    $users = Sentry::findAllUsersInGroup($group);
    $currentUser = Sentry::getUser();
    return View::make('users/account', 
       array('as' => 'account'))
              ->with(compact('users', 'currentUser')
      );
}

从下拉列表中选择一个用户后,我使用此代码获取用户特定信息:

<script>
$('#ffID').change(function(){
var infoShare= $('.infoStorage');
    $.get("{{ url('api/dropDownUserInformation')}}",
        { option: $(this).val() },
        function(data) {

            $.each(data, function(index, element) {
                alert( element.id );

           });
        });
});

这是路由文件api/dropDownUserInformation

Route::get('api/dropDownUserInformation',function(){
   $fieldForceID=Input::get('option');
   $invoices=Invoice::where('sender_id','=',$fieldForceID)->get();
   return Response::json($invoices);
});

到目前为止,这段代码工作正常,但是当我尝试通过模型绑定从一个表访问数据到另一个表时,它不允许我访问用户特定的信息。这是发票模型:

<?php
class Invoice extends \Eloquent {
    protected $fillable = [];

    public function sales() {
        return $this->hasMany('Sale', 'invoice_id','sender_id');
    }

    public function accounts() {
        return $this->belongsTo('SaleAccount');
    }
    public function senderName() {
        return $this->belongsTo('User','sender_id');
    }
}

我想访问users表,使用SenderName(). 所以我在我的脚本中写了这段代码:

alert( element.SenderName.first_name );

在控制台中显示此错误: TypeError: element.SenderName is undefined

我可以通过从路由文件中正常返回一些变量来进行模型绑定。

这是路由文件中的代码:

public function getUserInfo() {
    $invoice=Invoice::where('id','=',1)->get();
    return View::make('users/account', array(
           'as' => 'account'))->with(compact('invoice'));
}

这是查看文件中的代码:

@foreach($invoice as$inv)
   {{ $inv->senderName->first_name}}
@endforeach

它工作正常,但我不知道在以 JSON 格式返回数据后该怎么做。

4

1 回答 1

1

我会改变路线:

Route::get('api/dropDownUserInformation',function(){
    $fieldForceID = Input::get('option');
    $invoices = Invoice::where('sender_id','=',$fieldForceID)
        ->join('users', 'invoices.sender_id', '=', 'users.id')->get();
    return Response::json($invoices);
});

这应该可以在您的 jquery 函数中按如下方式访问...

 alert( element.first_name );
于 2015-01-21T11:27:59.313 回答