我正在执行Laravel任务,我想对一个与另一个表相关的表进行排序。我在这里阅读了文档:https://laravel.com/docs/5.4/eloquent-relationships#counting-related-models My code:
$addonCategories = AddonCategory::withCount('addons')->sortable()->orderBy('id', 'DESC')->with('addons')->paginate(20);
return view('admin.addonCategories', array(
'addonCategories' => $addonCategories,
));AddonCategory控制器:
class AddonCategory extends Model
{
use Sortable;
protected $casts = ['addons_count' => 'integer'];
public $sortable = ['name', 'type', 'addons_count', 'created_at'];
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
}addonCategories.blade.php:
<th>@sortablelink('addons_count', __('storeDashboard.acpTableNOA'))</th>当我使用sortable时,会出现错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'addons_count' in 'order clause' 我想是因为数据库表中没有addons_count。那么如何像这样使用{relations}_count排序呢?
发布于 2020-08-11 14:21:36
首先,看起来您正在使用库:https://github.com/Kyslik/column-sortable
AddonCategory中的$sortable属性将数组元素与表的列名相匹配。因此,您将收到错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'addons_count' in 'order clause'
鉴于addons_count列在MySQL表addon_category中不存在,而是由laravel作为属性添加的,您将需要实现Aliasing,这是在library's documentation中指定的
您的最终模型将为:
class AddonCategory extends Model
{
use Sortable;
protected $casts = ['addons_count' => 'integer'];
public $sortable = ['name', 'type', 'created_at'];
public $sortableAs = ['addons_count'];
public function items()
{
return $this->belongsToMany(Item::class);
}
public function addons()
{
return $this->hasMany('App\Addon');
}
}您实现的其余部分都很好。
https://stackoverflow.com/questions/63352123
复制相似问题