首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在数据库字段中有阵列,并希望使用Query Builder Laravel搜索5G为Yes value的设备,并在视图Laravel中显示产品

我在数据库字段中有阵列,并希望使用Query Builder Laravel搜索5G为Yes value的设备,并在视图Laravel中显示产品
EN

Stack Overflow用户
提问于 2021-08-31 14:10:52
回答 1查看 53关注 0票数 0

我在数据库中有一列,我在其中存储了一个数组,以便在数组中存储设备规格。我认为它的数组在数组中。现在,我想要获取设备,例如,技术5G为Yes值。以下是以下代码和数组的数据库条目

数据库中的规格数组

a:12:{s:6:"Launch";a:2:{s:9:"Announced";s:12:"2019,August";s:6:"Status";s:9:"Available";}s:7:"Network";a:7:{s:10:"Technology";s:35:"GSM / CDMA / HSPA / EVDO / LTE / 5G";s:2:"3G";s:3:"Yes";s:2:"4G";s:3:"Yes";s:2:"5G";S:3:“是”;s:5:“速度”;s:69:“HSPA 42.2/5.76 Mbps,LTE-A (7CA) Cat20 2048/150 Mbps,5G (2+ Gbps Mbpss:45:"162.3 x 77.2 x 7.9毫米(6.39 x 3.04 x 0.31英寸)“;s:6:”重量“;s:15:”198 g(前面6.98 oz)";s:3:"SIM";s:3:"Yes";s:5:"Build";s:75:"Glass (Gorilla Glass 6),玻璃背面(Gorilla glass 6),铝框)“;s:6:”其他“;S:143:“三星Pay (Visa,MasterCard认证) IP68防尘/防水(长达1.5米,30分钟)手写笔(蓝牙集成,加速度传感器,gyro)";}s:7:"Display";a:6:{s:4:"Type";s:49:"Dynamic AMOLED电容式触摸屏,16M颜色”;s:4:“尺寸”;s:51:“6.8英寸,114.0 cm2 (~91.0%屏体比)”;s:10:“分辨率”;s:49:"1440 x 3040像素,19:9比例(~498 ppi density)";s:10:"Multitouch";s:3:"Yes";s:10:"Protection";s:23:"Corning Gorilla Glass 6“;s:6:”其他“;s:25:”HDR10+,Always-on Android9.0 (Pie),计划升级到Android10.0;One UI 2";S:7:“芯片组”;s:31:“Exynos9825 (7 nm) -欧洲、中东和非洲/LATAM”;s:3:“中央处理器”;s:80:“八核(2x2.73 GHz Mongoose M4 & 2x2.4 GHz Cortex-A75 & 4x1.9 GHz Cortex-A55)”;s:3:“GPU”;s:26:“Mali G76 MP12 -欧洲、中东和非洲/LATAM”;}s:6:“内存”;a:2:{s:9:“卡插槽”;s:36:“microSD,最高1 TB (专用插槽)”;S:8:“内部”;s:30:“256 29 12 29内存,512 29 12 29 RAM";}s:6:"Camera";a:4:{s:7:"Primary";s:68:"12 MP,f/1.5-2.4,27 MP(宽),1/2.55",1.4µm,双像素PDAF,OIS”;s:8:“功能”;s:29:“LED,自动高清,全景”;s:5:“视频”;s:107:"2160p@30/60fps,1080p@30/60/240fps,720p@960fps,HDR10+,双视频录制,立体声录制,陀螺仪&OIS“;s:9:”二级“;s:57:”10 MP,f/2.2,26 MP(宽),1/3",1.22µm,双像素PDAF“;}s:5:”声音“;a:4:{s:11:”报警类型“;N;s:11:”扬声器“;s:3:”是“;通过AKG调谐的专用麦克风杜比s:9:"3.5mmJack";s:3:"Yes";s:6:"Others";s:95:"32-bit/384kHz音频主动降噪“;}s:5:”通信“;a:6:{s:4:”无线局域网“;s:60:”Wi-Fi 802.11 a/b/g/n/ac/ax,双频,Wi-Fi直连,热点“;s:9:”蓝牙“;s:19:”5.0,A2DP,LE,aptX";S:3:“GPS”;s:38:“是的,带A-GPS、GLONASS、BDS、GALILEO";s:3:"NFC";s:3:"Yes";s:5:"Radio";s:28:"FM无线电(仅限美国和加拿大)”;s:3:“USB”;s:36:“3.1,C型1.0可逆connector";}s:8:"Features";a:5:{s:7:"Sensors";S:91:“指纹(显示屏下,超声波)、加速计、陀螺仪、近程、指南针、barometer";s:9:"Messaging";N;s:7:"Browser";N;s:4:"Java";N;s:6:"Others";N;}s:7:"Battery";a:4:{s:7:"Battery";s:37:"Non-removable锂离子4300 mAh电池”;s:8:“待机”;N;s:9:“通话时间”;N;S:10:“音乐play";N;}s:4:"Misc";a:5:{s:6:"Colors";s:33:"Aura发光,光环白色,光环黑色”;s:6:“SAR US";N;s:6:"SAR EU”;N;s:11:“价格组”;s:43:“欧洲 1,232.07/ $ 1,257.20 /10 780.00”;s:7:“网站”;N;}}

现在,我在控制器中使用的查询

代码语言:javascript
复制
 public function technologynetwork(Request $request)
    {
        $tech = $request->a;
//        return $tech;

        $devices = DB::table('devices')
            ->select('devices.*')
            ->from('devices', 'specs_array')
            ->where('specs_array','===', array_search("Yes",specs_array))
            ->orderBy('release_year', 'desc')
            ->orderBy('release_month', 'desc')
            ->orderBy('id', 'desc')
            ->paginate(30);

        return view('frontend/'.$this->config->template.'/devices', [
            // global variables
            'config' => $this->config,
            'template_path' => $this->template_path,
            'logged_user_role' => $this->logged_user_role ?? NULL,

            // page variables
            'devices' => $devices,
            'count_all' => $devices->total(),
        ]);
    }

我的路线是web.php

代码语言:javascript
复制
Route::get('/spec/{a}', 'Frontend\DevicesController@technologynetwork');

和它的前端

代码语言:javascript
复制
  <dd><a href="{{url('spec/5G')}}">5G Phones</a></dd>

任何人谁能指导我如何可以获得任何规格明智的设备或如何从一个数组中搜索

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 18:31:21

无法解码数据库中的规格数组。假设您将规格保存在一个名为specs_array的列字段中,它的格式为:"5G":"Yes“

代码语言:javascript
复制
public function technologynetwork(Request $request)
    {
        $tech = $request->a;
        $search_string = '%"' . $tech . '":"Yes"%'; // = %"5G":"Yes"%

        $devices = DB::table('devices')
            ->select('devices.*')             // should remove this, not necessary
            ->from('devices', 'specs_array')  // should remove this, not necessary
            ->where('specs_array','LIKE', $search_string) // <= use LIKE for query
            ->orderBy('release_year', 'desc')
            ->orderBy('release_month', 'desc')
            ->orderBy('id', 'desc')
            ->paginate(30);

        return view('frontend/'.$this->config->template.'/devices', [
            // global variables
            'config' => $this->config,
            'template_path' => $this->template_path,
            'logged_user_role' => $this->logged_user_role ?? NULL,

            // page variables
            'devices' => $devices,
            'count_all' => $devices->total(),
        ]);
    }

当保存到数据库时,spec_arrays变成一个字符串,不应被视为数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69000276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档