首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Ajax和Laravel使用id从另一个表中获取值?

如何使用Ajax和Laravel使用id从另一个表中获取值?
EN

Stack Overflow用户
提问于 2021-03-14 01:10:49
回答 1查看 1.5K关注 0票数 0

我在Laravel上尝试,我在教程中找到了这个,其中我从一个表中获得了值。

我必须将第1表中的每一列的值与第2表的值进行比较,例如第1表的状态为1,它将检查状态类型表的id为1,在本例中,1是挂起的,因此datatable将显示“未决”而不是数字1。

下面是主计长的代码:

代码语言:javascript
复制
public function index()
{
    $documents = Documents::all();
    $status = Status::all();

    return view('document/index', compact('documents', 'status'));
}

public function getDocs(Request $request)
{
    if ($request->ajax()) {
        $docs = Documents::latest()->get();
        return Datatables::of($docs)
            ->addIndexColumn()
            ->addColumn('action', function($row){
                $actionBtn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
                return $actionBtn;
            })
            ->rawColumns(['action'])
            ->make(true);
    }
}

以下是文档/索引视图中的内容:

代码语言:javascript
复制
$(function () {

    var table = $('.yajra-datatable').DataTable({
        processing: true,
        serverSide: true,
        ajax: "{{ route('documents.list') }}",
        columns: [
            {data: 'id', name: 'id'},
            {data: 'status', name: 'status'}
        ]
    });

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-14 01:40:50

首先定义状态与文档模型之间的关系

地位模式:

代码语言:javascript
复制
public function docs(){
    return $this->hasMany(Documents::class);
}

文件模式:

代码语言:javascript
复制
public function state(){
    return $this->belongsTo(Status::class, 'status'); 
    # 'status' is the name of foreign key on documents table
}

文件主计长:

代码语言:javascript
复制
public function getDocs(Request $request)
{
    if ($request->ajax()) {
        $docs = Documents::with('state')->select('documents.*')->latest();
        # Here 'documents' is the name of table for Documents Model
        # And 'state' is the name of relation on Document Model.
        return Datatables::of($docs)
            ->addIndexColumn()
            ->addColumn('status_str', function($row){
                  # 'name' is the field in table of Status Model
                  return $row->state->name;
             })
            ->addColumn('action', function($row){
                $actionBtn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
                return $actionBtn;
            })
            ->rawColumns(['action'])
            ->make(true);
    }
}

索引视图:

代码语言:javascript
复制
$(function () {

    var table = $('.yajra-datatable').DataTable({
        processing: true,
        serverSide: true,
        ajax: "{{ route('documents.list') }}",
        columns: [
            {data: 'id', name: 'id'},
            {data: 'status_str', name: 'state.name'}
        ]
    });

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66620125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档