小编Coa*_*uck的帖子

Laravel Eloquent Select CASE?

是否有任何有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)

sql select case laravel eloquent

23
推荐指数
2
解决办法
5万
查看次数

通过核心数据进行不同的计数,NSExpression进入NSFetchedResultsController

目前正在使用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)

iphone core-data objective-c count distinct

7
推荐指数
1
解决办法
5572
查看次数

通用对象的 Kotlin 序列化...?

我有一个好主意来实现一个通用对象并尝试序列化/反序列化它,并收到此错误:

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)

generics serialization json kotlin json-deserialization

4
推荐指数
1
解决办法
2815
查看次数