php - 使用可调用参数修改查询
问题描述
我正在craftable
为我的应用程序生成一个管理面板。
我有一个属于组织类型模型的组织模型。
在索引列表中,我希望能够显示组织类型名称而不是 _id。为此,我必须修改此查询,以使用“with”方法急切加载关系。
清单的方法签名是:
public static function processRequestAndGet($request, $columns = array(), $searchIn = null, $modifyQuery = null, $locale = null)
索引方法是:
$data = AdminListing::create(Organisation::class)->processRequestAndGet(
// pass the request with params
$request,
// set columns to query
['id', 'organisation_type_id', 'name', 'active'],
// set columns to searchIn
['id', 'name']
);
if ($request->ajax()) {
return ['data' => $data];
}
return view('admin.organisation.index', ['data' => $data]);
Craftable,提供了一个 modifyQuery 方法,但我不知道如何使用它:
public function index(IndexMovie $request)
{
$data = AdminListing::create(Movie::class)
->modifyQuery(function($query) use ($request){
if ($request->has('author_id')) {
$query->where('author_id', $request->author_id);
}
})
->get();
有人可以帮我使用回调来修改查询,以便我可以包含相关的表数据吗?
解决方案
好的,所以我遇到了完全相同的问题,我想分享我的做法。
craftable
使用一个processRequestAndGet
函数,该函数将预期的可调用查询作为第四个参数。因此,当您需要使用该参数而不是尝试modifyQuery
直接访问该函数时。
$data_r = AdminListing::create(Organisation::class)
->processRequestAndGet(
// pass the request with params
$request,
// set columns to query
['id', 'organisation_type_id', 'name', 'active'],
// set columns to searchIn
['id', 'name'],
function($query) use ($request){
if ($request->has('author_id')) {
$query->where('author_id', $request->author_id);
}
}
);
你几乎是对的,只需在你的内部传递预期的回调processRequestAndGet
,瞧。
推荐阅读
- django - Django Rest Framework模型视图集 - 在创建之前更新字段
- javascript - MissingSchemaError:尚未为模型“标记”注册模式
- python - 使用 LabelEncoder 转换日期
- java - 在 Gradle Spring Boot 项目中,如何声明依赖项仅在本地运行时使用?
- php - Call PHP constant by name vs number
- spring - 从 gs-produce-web-service 开始
- python - Python 日期时间模式匹配
- python - 创建 XML 内联 xmlns
- java - POI - get.hyperlink() 未检索单元格的最新超链接
- pandas - pdDataFrame 从多列和多行数据中获取最早的时间