我有一个大查询(在我的查询构建器中)和很多左连接.所以我得到他们的评论和标签等文章.假设我有以下dql:
$dql = 'SELECT blogpost, comment, tags
FROM BlogPost blogpost
LEFT JOIN blogpost.comments comments
LEFT JOIN blogpost.tags tags';
Run Code Online (Sandbox Code Playgroud)
现在让我们说我的数据库有超过100个博客帖子,但我只想要前10个,但是包含那些10及其所有标签的所有评论,如果它们存在的话.如果我使用setMaxResults它限制行.所以我可能得到前两个帖子,但最后一个帖子缺少一些评论或标签.所以跟随不起作用.
$result = $em->createQuery($dql)->setMaxResults(15)->getResult();
Run Code Online (Sandbox Code Playgroud)
使用doctrine2.2附带的几乎没有文件记录的分页解决方案对我来说并不是真的有效,因为它太慢了,我也可以加载所有数据.
我在Stackoverflow文章中尝试了解决方案,但即使该文章仍然缺少最佳实践,所提出的解决方案也非常慢.
对于如何做到这一点,是否有最佳实践?没有人在生产模式下使用Doctrine2.2吗?
pagination subquery query-builder database-performance doctrine-orm
我在Symfony2中有一个项目,它在我的本地主机上运行良好,但在将其移动到外部服务器后问题已经开始.
例如:
(...)
WHERE ((((c1_.name LIKE '%Å?%') OR (c3_.name LIKE '%Å?%') OR (..)
Parameters: ['%?%', '%?%', (...)]
所有数据库表都有charset = utf8_unicode_ci.
在config.yml我设置
doctrine:
dbal:
charset: UTF8
Run Code Online (Sandbox Code Playgroud)
设置框架charset不起作用.
/config.php测试说:
RECOMMENDATIONS:
1. Install and enable a PHP accelerator like APC (highly recommended).
2. Set short_open_tag to off in php.ini*.
3. Set magic_quotes_gpc to off in php.ini*.
* Changes to the php.ini file must be done in "/usr/local/php/php.ini".
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我无法访问该服务器上的php.ini.这可能是magic_quotes_gpc导致了这个问题吗?我也无法访问命令行,所以我通过ftp和phpmyadmin添加了项目(数据库,文件系统,供应商).
Becouse我在本地主机上没有问题我猜这是服务器配置的问题,我无法访问它,我看到的唯一方法是尝试更改QueryBuilder的charset配置.我在哪里可以做到的?你知道还有什么可能导致这个问题吗?
谢谢
我找到了http://redquerybuilder.appspot.com/,但这会生成我希望避免的SQL客户端.在帽子页面上有一个指向JQuery Query Builder插件的链接,但该链接转到jquery主页.看起来这个插件不再存在了(另请参阅JQuery中的简单SQL查询生成器以获得相同的链接).
我找到了http://kindohm.com/posts/2013/09/25/knockout-query-builder/,它看起来非常符合我的要求,除了我不想添加另一个JavaScript库.
最后有http://devtools.korzh.com/easyquery/javascript/docs/javascript-query-builder-php,看起来非常好.但他们使用Web服务生成SQL,您必须获得一个API密钥才能生效.现在它是免费的...但看起来像一个很好的陷阱诱使用户,然后当他们不能轻易逃脱时,可能会开始收取Web服务或可以随时关闭它.
因此,在我构建自定义查询表单之前,是否存在这样的查询构建器?
我有以下sql查询
SELECT * FROM exams WHERE exams.id NOT IN (SELECT examId FROM testresults)
Run Code Online (Sandbox Code Playgroud)
如何将其转换为Laravel查询构建器格式?
谢谢.
简单问题:我有一个带有两个日期列(从,直到)的(MySQL)表,并询问它
select * from mytable where until > from + interval 4 week;
Run Code Online (Sandbox Code Playgroud)
这在 MySQL 中非常简单。
你怎么能在 JPA Query 中做到这一点
cq.where(cb.and(mytable_.get(until),...)
Run Code Online (Sandbox Code Playgroud)
编辑:两个日期都来自数据库行,我比较了数据库的两个字段,而不是应用程序中的一个字段与数据库中的一个字段。
在我的一个工作脚本中,基于某些指标存储聚合计数,我没有使用Eloquent,因为查询有点复杂,并且使用查询构建器很容易编写.我目前从数据库中获取值,我需要在数据库中插入/更新它.使用Query Builder可以实现upsert操作是否可以使用Query Builder实现?或者我是否每次都需要检查此条目是否在数据库中?
我总共有100,000个条目,并希望将其作为日常工作运行.因此,如果我需要检查数据库中是否存在特定条目,我需要多次访问数据库.有替代解决方案吗?
我正在考虑创建两个模型类,一个使用Eloquent,另一个使用查询构建器.我可以在Eloquent模型中使用我的自定义查询吗?
query-builder laravel eloquent laravel-5 laravel-query-builder
我正在使用 Laravel 5 并且我有一个用户表,以及两个包含用户之间关系的表“客户”和“员工”。
我想获得登录用户的所有客户和员工。
我有一个原始查询,它可以正常工作:
select users.* from clients, users
where clients.id_marchand = 8 and users.id = clients.id_client
union
select users.* from employes, users
where employes.id_marchand = 8 and users.id = employes.id_employe
order by `seen` asc, `created_at` desc limit 25 offset 0
Run Code Online (Sandbox Code Playgroud)
原始查询返回一个数组,但我需要获得一个 Eloquent 集合,例如:
return $this->model
->where(...)
->oldest('seen')
->latest()
->paginate($n);
Run Code Online (Sandbox Code Playgroud)
我尝试了很多不同的可能性,但它们都不起作用......
有没有办法用子查询或其他方法来做到这一点?
我构建了一个搜索表单,它将从数据库中选择标记,其中日期插入到数据选择器中。这工作正常,但是,当我添加时间时,出现错误。
我将查询重建为类似的内容:
$datefrom = $request->input('datefrom');
$dateto = $request->input('dateto');
$timefrom = $request->input('timefrom');
$timfrom = $timefrom.':00';
$timeto = $request -> input('timeto');
$timto = $timeto.':00';
$type = $request->input('type');
$maps = Map::select('lat','lng',$type,'temp','humidity','date','time')
->where(function($query){
$query->whereBetween('date',array($datefrom,$dateto))
->whereBetween('time',array($timfrom,$timto));
})
->get();
Run Code Online (Sandbox Code Playgroud)
当我在搜索表单上输入检查时,出现错误:
未定义变量:$datefrom 等。
有什么帮助吗?
我想将查询构建器与LIKE运算符一起使用,但它无法正常工作.
这是我的控制器中的代码:
public function listall($query) {
$Clubs = Club::where('clubs.name', 'like', "%$query%")
->Join('leagues', 'clubs.league_id', '=', 'leagues.id')
->select('clubs.id', 'clubs.name', 'clubs.blason', 'leagues.name as league_name')
->orderBy('clubs.name')
->get();
return Response::json($Clubs);
}
Run Code Online (Sandbox Code Playgroud)
这是我的Javascript代码:
<script type="text/javascript">
function hasard(min,max){
return min+Math.floor(Math.random()*(max-min+1));
}
jQuery(document).ready(function($) {
// Set the Options for "Bloodhound" suggestion engine
var engine = new Bloodhound({
remote: {
url: "{{ url('club/listall') }}"+'/%QUERY%',
wildcard: '%QUERY%'
},
datumTokenizer: Bloodhound.tokenizers.obj.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace
});
$(".club-search").typeahead({
hint: true,
highlight: true,
minLength: 1
}, {
source: engine.ttAdapter(),
display: "name",
// This will be …Run Code Online (Sandbox Code Playgroud) 我有两个实体User和CalendarEvent。我的用户附属于一家工厂,calendarEvent 可用于了解用户是否被“借用”到他所属工厂的另一家工厂......
我的两个实体是这样的:
用户:
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
* @ORM\Column(name="firstname", type="string", length=255, nullable=true)
*/
private $firstname;
/**
* @var string
* @ORM\Column(name="lastname", type="string", length=255, nullable=true)
*/
private $lastname;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\CalendarEvent", mappedBy="user")
*/
private $events;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Factory", inversedBy="users")
* @ORM\JoinColumn(name="factory_id", referencedColumnName="id")
*/
private $factory;
}
Run Code Online (Sandbox Code Playgroud)
日历事件:
class CalendarEvent
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* …Run Code Online (Sandbox Code Playgroud) doctrine join repository query-builder conditional-statements
query-builder ×10
laravel ×4
mysql ×3
eloquent ×2
laravel-5 ×2
php ×2
sql ×2
database ×1
doctrine ×1
doctrine-orm ×1
java ×1
javascript ×1
join ×1
jpa ×1
jquery ×1
pagination ×1
repository ×1
sql-like ×1
subquery ×1
symfony ×1