如何在Yii2中使用查询构建器更新字段?我在文档中找不到这个.
谢谢!
UPD
这是解决方案:
// UPDATE
$connection = Yii::$app->db;
$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
Run Code Online (Sandbox Code Playgroud) 是否存在用于管理自定义布尔样式查询创建的(良好/可用/非丑陋)JavaScript /接口库,类似于Google Analytics高级细分市场界面?
基本上,用于查询构建的动态接口可用于连接到后端的自定义查询构建器(在我的情况下,MySQL,但它不需要是特定于数据库的).
我四处搜寻,但没有找到任何有用或有用的东西.

javascript database user-interface query-builder boolean-search
我的应用程序动态构建并运行复杂查询以生成报告.在某些情况下,我需要获得多个,有些任意的日期范围,所有其他参数都相同.
所以我的代码使用一堆连接,数组,排序,限制等来构建查询,然后运行查询.我当时想要做的是跳转到Builder对象并更改where子句,这些子句定义要查询的日期范围.
到目前为止,我已经做到了这样,以便在任何其他时间之前设置日期范围,然后尝试手动更改wheres数组的相关属性中的值.像这样;
$this->data_qry->wheres[0]['value'] = $new_from_date;
$this->data_qry->wheres[1]['value'] = $new_to_date;
Run Code Online (Sandbox Code Playgroud)
然后我做(已经做过一次)
$this->data_qry->get();
Run Code Online (Sandbox Code Playgroud)
虽然不起作用.查询只与原始日期范围一起运行.即使我的方式有效,我仍然不喜欢它,因为它似乎是以不稳定的依赖(某种耦合?)来拍摄的.即; 如果没有先设置日期,则它们全部崩溃.
我可以从头开始重新设置整个查询,只是使用不同的日期范围,但这看起来很糟糕,因为查询中的其他内容需要与上次使用时相同.
如何以正确/最好的方式实现这一点的任何想法都是非常受欢迎的.
谢谢,
杰夫
在Laravel 5.1中,对于MySQL插入,我想查看记录是否已经存在并在重复时更新,或者如果不存在则创建新的.
我已经搜索了那里的答案是旧的laravel版本.在其中一个老话题中,它说updateOrCreate()去年核心增加了一种新方法.但是当我尝试这个时,我收到了错误:
Integrity constraint violation: 1062 Duplicate entry '1' for key 'app_id'
Run Code Online (Sandbox Code Playgroud)
这是我使用的查询:
AppInfo::updateOrCreate(array(
'app_id' => $postData['appId'],
'contact_email' => $postData['contactEmail']
));
Run Code Online (Sandbox Code Playgroud)
app_id该表中的唯一外键在哪里,我想更新记录(如果存在)或创建新记录.我试过搜索5.1文档但找不到我需要的信息.有人可以在这里指导我吗...
我无法在Laravel 5.3中运行这个简单的查询
$top_performers = DB::table('pom_votes')
->groupBy('performer_id')
->get();
Run Code Online (Sandbox Code Playgroud)
它给了我:
SQLSTATE[42000]: Syntax error or access violation: 1055 'assessment_system.pom_votes.id' isn't in GROUP BY (SQL: select * from `pom_votes` group by `performer_id`)
Run Code Online (Sandbox Code Playgroud)
但是,如果我从错误中复制原始查询并直接在PhpMyAdmin中触发,它可以正常工作.
我已经检查了这个:
https://laravel.com/docs/5.3/queries#ordering-grouping-limit-and-offset
任何帮助将是appricaited.
谢谢,
Parth Vora
我想选择没有特定服务的会员.我有3张桌子:
membreservicemembre_service(membre和之间的关系service)我正在使用doctrine 2,在SQL中我的查询是:
SELECT m.* FROM membre m WHERE m.`id` NOT IN (
SELECT ms.membre_id FROM membre_service ms WHERE ms.service_id != 29
)
Run Code Online (Sandbox Code Playgroud)
在Doctrine,我做:
$qb = $this->_em->createQueryBuilder();
$qb2 = $qb;
$qb2->select('m.id')
->from('Custom\Entity\MembreService', 'ms')
->leftJoin('ms.membre', 'm')
->where('ms.id != ?1')
->setParameter(1, $service);
$qb = $this->_em->createQueryBuilder();
$qb->select('m')
->from('Custom\Entity\Membre', 'm')
->where($qb->expr()->notIn('m.id', $qb2->getDQL())
);
$query = $qb->getQuery();
//$query->useResultCache(true, 1200, __FUNCTION__);
return $query->getResult();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
语义错误]第0行,第123页'm WHERE ms.id'附近:错误:'m'已经定义.
我想将我的实体放在查询生成器的函数中:
->add( 'weeks', 'entity', array(
'class' => 'MV\CaravanBundle\Entity\CaravanRow',
'property' => 'line',
'query_builder' => function(EntityRepository $er ) use ( $caravan ) {
return $er->createQueryBuilder('w')
->orderBy('w.dateFrom', 'ASC')
->where('w.caravan = ?', $caravan )
->andWhere('w.visible = 1')
->andWhere('w.booked = 0');
}
Run Code Online (Sandbox Code Playgroud)
但得到消息:
在此上下文中不允许表达"实体\名称"类型
那么提供querybuilder信息的(最佳)方法是什么呢?
我正在通过过滤器进行产品搜索:
我的代码:
->where(function($query) use($filter)
{
if(!empty($filter)){
foreach ($filter as $key => $value) {
$f = explode(",", $value);
$query-> whereIn('products.value', $f);
}
}
})
Run Code Online (Sandbox Code Playgroud)
查询:
and (products.value in (Bomann, PHILIPS) and products.value in (red,white))
Run Code Online (Sandbox Code Playgroud)
但是我需要:
and (products.value in (Bomann, PHILIPS) OR products.value in (red,white))
Run Code Online (Sandbox Code Playgroud)
Laravel有类似的东西:
orWhereIn
Run Code Online (Sandbox Code Playgroud) 相近
select count(*) from tablename;
Run Code Online (Sandbox Code Playgroud)
什么应该在ORMLITE中查询
我尝试过类似的东西
int total = dao.queryBuilder().("select count(*)");
Run Code Online (Sandbox Code Playgroud) 我有一个任务 - 添加搜索模型搜索全名.全名是名字+姓氏.所以我需要构建查询
WHERE first_name LIKE '%var%' OR last_name LIKE '%var%'
Run Code Online (Sandbox Code Playgroud)
我能做到的唯一方法:
$query->andFilterWhere([
'OR',
'profiles.first_name LIKE "%' . $this->userFullName . '%" ',
'profiles.last_name LIKE "%' . $this->userFullName . '%"'
]);
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它,因为它不安全.我不知道怎么...我认为有办法用yii2活动构建器构建这样的查询,我想得到结果像
$query->andFilterWhere(['LIKE', 'profiles.first_name', $this->userFullName]);
$query->andFilterWhere(['OR LIKE', 'profiles.last_name', $this->userFullName]);
Run Code Online (Sandbox Code Playgroud)
问题出在查询中,我可以使用数组作为属性将被comapred的值,但我不能使用数组作为要比较的属性列表.
要么
$subQuery1 = Profile::find()->Where(['LIKE', 'profiles.first_name', $this->userFullName]);
$subQuery2 = Profile::find()->Where(['LIKE', 'profiles.last_name', $this->userFullName]);
//i think its overloaded(3 queries insteadof 1 but still) and the final query
$query->andFilterWhere([
'OR',
$subQuery1,
$subQuery2
]);
Run Code Online (Sandbox Code Playgroud)
任何想法如何构建查询whithout"%"?
query-builder ×10
laravel ×4
php ×3
mysql ×2
yii2 ×2
android ×1
builder ×1
database ×1
doctrine-orm ×1
eloquent ×1
forms ×1
javascript ×1
laravel-4 ×1
laravel-5 ×1
laravel-5.3 ×1
ormlite ×1
symfony ×1
updating ×1