首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在从infyom生成的yajra数据表中显示field_name,而不是field_id。

在从infyom生成的yajra数据表中显示field_name,而不是field_id。
EN

Stack Overflow用户
提问于 2018-11-28 02:25:45
回答 2查看 2.1K关注 0票数 0

我有过

  • 使用字段“id”、“transaction_id”、“日期”、“金额”、“payment_method_id”、“additional_note”的支付数据表
  • 包含“id”、“name”、“code”字段的payment_methods表

我想要实现的是在支付数据表中显示支付方法->名称而不是payment_method_id

这是我的数据表代码

代码语言:javascript
复制
 <?php

namespace App\DataTables;

use App\Models\Payment;
use Yajra\DataTables\Services\DataTable;
use Yajra\DataTables\EloquentDataTable;

class PaymentDataTable extends DataTable
{
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable($query)
    {
        $dataTable = new EloquentDataTable($query);

        return $dataTable->addColumn('action', 'payments.datatables_actions');
    }

    /**
     * Get query source of dataTable.
     *
     * @param \App\Models\Post $model
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function query(Payment $model)
    {
        return $model->newQuery();
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\DataTables\Html\Builder
     */
    public function html()
    {
        return $this->builder()
            ->columns($this->getColumns())
            ->minifiedAjax()
            ->addAction(['width' => '120px'])
            ->parameters([
                'dom'     => 'Bfrtip',
                'order'   => [[0, 'desc']],
                'buttons' => [
                    ['extend' => 'create', 'className' => 'btn btn-default btn-sm no-corner',],
                    ['extend' => 'export', 'className' => 'btn btn-default btn-sm no-corner',],
                    ['extend' => 'print', 'className' => 'btn btn-default btn-sm no-corner',],
                    ['extend' => 'reset', 'className' => 'btn btn-default btn-sm no-corner',],
                    ['extend' => 'reload', 'className' => 'btn btn-default btn-sm no-corner',],
                ],
            ]);
    }

    /**
     * Get columns.
     *
     * @return array
     */
    protected function getColumns()
    {
        return [
            'transaction_id',
            'date',
            'amount',
            'payment_method_id',
            'additional_note'
        ];
    }

    /**
     * Get filename for export.
     *
     * @return string
     */
    protected function filename()
    {
        return 'paymentsdatatable_' . time();
    }
}

我到处搜索,知道它必须做些什么

代码语言:javascript
复制
 public function query(Payment $model)
        {
            return $model->newQuery();
        }

但还没有找到有效的解决方案..。也许有什么建议

注:我也在这里发布了询问https://github.com/InfyOmLabs/laravel-generator/issues/582的帖子,但还没有回复。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-28 03:48:11

有一段时间没有使用Yajra表了,但是我做了这样的事情。根据您如何命名PaymentPaymentMethod之间的关系,修改它以适应您的情况。

代码语言:javascript
复制
public function query(Payment $model)
{
    return $model->newQuery()->with(['paymentMethod']);

    // specify columns if you like
    // return $model->newQuery()->with(['paymentMethod'])->select('payments.*');
}

...

protected function getColumns()
{
    return [
        'transaction_id',
        'date',
        'amount',
        [
            'name' => 'paymentMethod.name',
            'data' => 'paymentMethod.name',
            'title' => 'Payment Method',
            'defaultContent' => '',
        ],
        'additional_note',
    ];
}
票数 1
EN

Stack Overflow用户

发布于 2019-11-26 06:25:31

用InfyOm Laravel生成器将关系数据显示到Yajra DataTables中

需要修改datatable文件上的getColumn()方法。

代码语言:javascript
复制
protected function getColumns()
{
    return [
        'title',
        'author_name' => new \Yajra\DataTables\Html\Column(['title' => 'Author Name', 'data' => 'author.name', 'name' => 'author.name'])
    ];
} 

修改查询方法以返回关系数据。

代码语言:javascript
复制
public function query(Post $model)
{
    return $model->newQuery()->with(['author']);
}

这里有一个完整的博客,例子是:https://blog.infyom.com/how-to-display-relationship-data-into-yajra-datatables-with-infyom-laravel-generator

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

https://stackoverflow.com/questions/53511199

复制
相关文章

相似问题

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