我正在编写带有评论的新闻更新系统.我有三张桌子.
news_tblusers_tbl(新闻报道的作者)comments_tbl(与外键连接 - news_id)
我尝试了两种方法,有没有GROUP_CONCAT.
我试过这个:
SELECT *, COUNT(comments_tbl.comments_id) AS `comments_count`
FROM news_tbl AS n
LEFT JOIN users_tbl AS u
ON n.user = u.username
LEFT JOIN comments_tbl AS c
ON c.news_id = n.news_id
GROUP BY n.news_id;
Run Code Online (Sandbox Code Playgroud)
它有效,但我只能显示第一个书面评论,但是,我想显示附加到新闻更新的所有评论.
我也用过GROUP_CONCAT评论,因此对于每个评论都没有重复的新闻帖子.我不确定它是否是正确的方法,但它确实有效.
我的问题是,我有一个登录系统,我希望用户能够单独删除注释,并为每个注释删除按钮.但我不知道如何单独分离评论,并从每个评论中获取id.我试过PHP explode,但它对我不起作用.
这是我的代码:
<?php
require_once('connect.inc.php');
$conn = dbConnect('pdo') or die('no connection');
$sqlquery = "SELECT news_tbl.*, users_tbl.*,
GROUP_CONCAT(comments_tbl.comments_id) AS commentsid,
GROUP_CONCAT(CONCAT ('<hr><h6>Navn: ', comments_tbl.name,'</h6>','<p>',comments_tbl.comment, '</p>') SEPARATOR '<br><br>') AS comments,
COUNT(comments_tbl.comments_id) AS comments_count
FROM news_tbl …Run Code Online (Sandbox Code Playgroud) 如何创建AngularJS $位置服务search()方法的单元测试?
我使用Jasmine + Karma进行测试和AngularJS 1.3,单元测试对我来说是新的:)
这是我的服务,在生产btw工作正常:
'use strict';
(function () {
angular.module('myApp')
.service('myService', function ($location) {
var _customerId = $location.search().id;
/*jshint validthis:true */
this.customerId = _customerId;
});
})()
Run Code Online (Sandbox Code Playgroud)
这是我的服务规范:
describe('Service: mySerivce', function(){
var $location;
beforeEach(module('myApp'));
beforeEach(inject(function(_$location_){
$location = _$location_;
}));
it('should get ID from url', function(){
$location.path('/?id=1080');
console.log($location.path()); // logs: '/?id=1080'
console.log($location.search().id); // logs: undefined
expect($location.search().id).toEqual(1080); // Returns err msg Expected undefined to equal 1080.
})
});
Run Code Online (Sandbox Code Playgroud)
当我使用search()方法时,我得到的是未定义的?如何在单元测试中使用该方法?
如何在Jasmine单元测试中模拟或模拟窗口滚动并设置window.pageYOffset属性?
我正在使用Angular 1.3,Jasmine 2.1 + Karma 0.12.28和PhantomJS 1.9.12
这是我的指令:
'use strict';
(function () {
angular
.module('myApp')
.directive('scrollNews', scrollNews);
function scrollNews(){
var directive = {
restrict: 'A',
scope: false,
link: link
};
return directive;
function link(scope, element) {
scope.limit = 2;
//add one to the limit
scope.loadMore = function() {
scope.limit += 1;
};
var raw = element[0];
angular.element(window).on('scroll', function () {
var scrollFrontier = this.pageYOffset + 800;
// when scrollFrontier has reached raw.scrollHeight, run loadMore()
if (scrollFrontier >= raw.scrollHeight) { …Run Code Online (Sandbox Code Playgroud)