是否有任何有PHP和Laravel Eloquent经验的人可以帮我解决这个问题?我正在尝试注入一个CASE ... WHEN .. END ...在raw()方法中.它似乎完全被忽略了.现有的文件还没有.我尝试了几种不同的东西,但没有占上风.我试图解决这个问题:
SELECT shares.id, ...,
CASE WHEN users.id = <CurrentUser> THEN 1 ELSE 0 END AS is_user,
...
FROM <table>
...
Run Code Online (Sandbox Code Playgroud)
源代码如下:
$shares = Share::where('shares.status', '=', SHARE_STATUS_APPROVED)
->where('shares.deleted', '=', '0')
->where('locations.lat', '<=', $nelat)
->where('locations.lat', '>=', $swlat)
->where('locations.lng', '>=', $nelng)
->where('locations.lng', '<=', $swlng)
->where('users.id', '=', $user)
->orWhere('shares.connected_user_id', '=', $user)
->join('users', 'shares.user_id', '=', 'users.id')
->join('locations', 'locations.id', '=', 'users.location_id')
->join('provinces', 'provinces.id', '=', 'locations.province_id')
->join('countries', 'countries.id', '=', 'locations.country_id')
->select('shares.id AS share_id', 'users.id AS user_id', 'shares.connected_user_id', 'shares.original_language_id', 'shares.image',
'users.first_name', 'users.last_name', …Run Code Online (Sandbox Code Playgroud) 目前正在使用Core Data.我有一个表,我试图在这些行中检索信息:
SELECT item, COUNT(*) FROM myTable GROUP BY item;
Run Code Online (Sandbox Code Playgroud)
为了产生这种结果:
+---------+------+-------+
| item | COUNT(*) |
+---------+------+-------+
| group 1 | 2 |
| group 2 | 5 |
| group 3 | 8 |
+---------+------+-------+
Run Code Online (Sandbox Code Playgroud)
我有一个明智的想法是使用NSExpression,希望让Core Data为我完成所有工作.我开始转动轮子.该计数:表达功能崩溃的我.例外不是很清楚.使用其他表达式函数(例如sum)不会使应用程序崩溃.
将结果存储在NSFetchedResultsController中会很好.我已经探索了其他选择,其中没有一个不太吸引人.编写SQL查询并将其解决更有意义,而不是在这种情况下使用Core Data作为SQL包装器吗?
您的参考源代码如下.
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"item"];
NSExpression *totalExpression = [NSExpression expressionForFunction:@"count:" arguments:[NSArray arrayWithObject:keyPathExpression]];
NSExpressionDescription * totalExpressionDescription = [[NSExpressionDescription alloc] init];
[totalExpressionDescription setExpression:totalExpression];
[totalExpressionDescription setExpressionResultType:NSInteger64AttributeType];
[totalExpressionDescription setName:@"totalInstances"];
NSFetchRequest …Run Code Online (Sandbox Code Playgroud) 我有一个好主意来实现一个通用对象并尝试序列化/反序列化它,并收到此错误:
Serializer for class 'DetailsRequest' is not found.
Mark the class as @Serializable or provide the serializer explicitly.
Run Code Online (Sandbox Code Playgroud)
我认为 @Serializer 注释会实现这一目标......???
数据类的实现及其自定义序列化器(这可能有点过头了)如下:
@Serializable(with=DetailsRequestSerializer::class)
data class DetailsRequest<out T>(val details: T)
object DetailsRequestSerializer : KSerializer<DetailsRequest<*>> {
override val descriptor: SerialDescriptor = buildClassSerialDescriptor(
"DetailsRequest") {
when (this::class) {
String::class -> element<String>("details")
Long::class -> element<Long>("details")
Int::class -> element<Int>("details")
Double::class -> element<Double>("details")
Float::class -> element<Float>("details")
else -> element<String>("details")
}
}
override fun serialize(
encoder: Encoder,
value: DetailsRequest<*>
) {
value.details.let {
encoder.encodeStructure(descriptor) {
when (value::class) …Run Code Online (Sandbox Code Playgroud)