我想在datatable服务器端显示条件如下:
如果STOK <5,则STOK将为红色
这是我的控制器:
<?php
namespace App\Http\Controllers;
use App\Models\ModelProduk;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Yajra\Datatables\Datatables;
use Illuminate\Support\Facades\Blade;
class Produk extends Controller
{
public function index(Request $r)
{
if ($r->ajax()) {
$dataProduk = ModelProduk::join('kategori', 'produk.idkat', '=', 'kategori.idkat')
->join('satuan', 'produk.idsat', '=', 'satuan.idsat')
->select('produk.*', 'kategori.namakat', 'satuan.namasat')
->get();
return Datatables::of($dataProduk)
->editColumn('stok', 'produk.stokColumn')
->addColumn('action', 'produk.actionTableIndex')
->toJson();
};
return View('produk.index');
}
}问题解决了!!
只需要在我的控制器中添加->escapeColumns([]),所以我的控制器如下所示:
public function index(Request $r)
{
if ($r->ajax()) {
$dataProduk = ModelProduk::join('kategori', 'produk.idkat', '=', 'kategori.idkat')
->join('satuan', 'produk.idsat', '=', 'satuan.idsat')
->select('produk.*', 'kategori.namakat', 'satuan.namasat')
->get();
return Datatables::of($dataProduk)
->editColumn(
'stok',
'produk.stokColumn'
)
->escapeColumns([])
->addColumn('action', 'produk.actionTableIndex')
->make(true);
};
return View('produk.index');
}这是stokColumn.blade.php:
@if ($stok < 5)
<span class="p-1 py-2 bg-red-700 text-white font-bold rounded-lg block hover:bg-slate-500">{!! $stok !!} </span>
@else
{!! $stok !!}
@endif结果:

谢谢所有回答我问题的人
发布于 2022-05-27 04:51:08
尝试将$stok转换为整数,因为它可能是一个字符串。
@if ((int) $stok < 5)或者使用浮点数可能更安全
@if (floatval($stok) < 5)更新
由于$stok是一个集合,所以使用集合助手或将其转换为数组是个好主意。我建议你学习帮手,他们太棒了。文档
在您的情况下,您需要的是“计数”方法:
if ($stok->count() < 5)如果您想使用数组
$stok->toArray();https://stackoverflow.com/questions/72400511
复制相似问题