小编Ash*_*osh的帖子

Laravel雄辩的嵌套查询

我在与Laravel合作时陷入了困境。我有以下型号:

  • 类别
  • 产品
  • 分类产品

CategoryProduct 保存有关哪个产品属于哪个类别的信息(一个产品可能属于多个类别)。

现在,当我想加载属于特定类别的所有产品时,我需要在上面运行查询ProductCategoryProduct 这就是我遇到的问题。

我尝试了以下方法,但未成功:

$products = Product::where('status', '=', 'active')
->where('category_id', '=', $category_id)
->take($count)
->skip($skip)
->get();
Run Code Online (Sandbox Code Playgroud)

显然,它将说category_id不是一列。

这是我的数据库和模型结构:

类别表

ID,名称等

产品表

ID,名称,SKU等

category_products表

id,product_id,(Product.id的外键)category_id,(Category.id的外键)等。

产品型号

class Product extends Eloquent {

protected $table = 'products';

protected $hidden = array();

    public static $rules = array('name' => 'required|min:3');

}
Run Code Online (Sandbox Code Playgroud)

类别模型

class Category extends Eloquent {

protected $table = 'categories';

public static $rules = array('name' => 'required|min:3');

}
Run Code Online (Sandbox Code Playgroud)

分类产品型号

<?php

class CategoryProduct extends Eloquent { …
Run Code Online (Sandbox Code Playgroud)

relationship laravel eloquent

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

Mocha 测试用例未等待完成

我正在 Nodejs 中使用 mocha 编写测试用例,并希望在运行测试之前重置数据库数据。我使用 Knex 作为查询生成器来执行查询。

我写了以下逻辑:

describe('Activities:', function() {

  before(funtion(){
   activityDBOperations.deleteAll()
   .then(function(){
       // all records are deleted
   });
  });

  it('it should add a record into Activities table: multiple time activity',  function(done) {
    activityDBOperations.addRecord(requestParams)
        .then(function(data) {
            expect(data.length > 0).to.equal(true);
            done();
        });
  });
});
Run Code Online (Sandbox Code Playgroud)

问题是测试用例开始执行而不是等待deleteAll 操作完成。我的理解是,由于deleteAll正在返回promise,因此由于promise的异步性质,程序执行会向前推进。

如何确保测试用例仅在 deleteAll 完成后运行?

mocha.js node.js promise

5
推荐指数
1
解决办法
4701
查看次数

无法在 postgres 插入中插入问号

我正在尝试运行一个简单的 Postgres SQL 插入:

insert into "Resources" values(1, 'How are you?');
Run Code Online (Sandbox Code Playgroud)

但是插入后的结果是:

ID        Data
---       ------
1         How are you$1
Run Code Online (Sandbox Code Playgroud)

我知道,要插入像单引号这样的字符,我必须用另一个单引号将其转义,例如:我不能这样做。

但是怎么办呢?

postgresql node.js knex.js

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

Sequelize:在其中传递Sequelize.op.in

我正在为模型动态创建位置。我想用多个值。我阅读了文档并在线查看后发现:

Patient.findAll({
    limit: limit,
    offset: offset,
    where: {
        [Sequelize.Op.in]: patientIds
    }
 });
Run Code Online (Sandbox Code Playgroud)

我想建立这样的地方

var filter = {
   [Sequelize.Op.in]: patientIds,
   is_active: filter.is_active
};

Patient.findAll({
    limit: limit,
    offset: offset,
    where: filter
});
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

const op = Sequelize.Op;
const operatorsAliases = {
    $in: op.in
};
Run Code Online (Sandbox Code Playgroud)

然后:

var filter = {
   operatorsAliases.$in: patientIds,
   is_active: filter.is_active
};
Run Code Online (Sandbox Code Playgroud)

但是在两种情况下,它都会给我错误:

TypeError: s.replace is not a function
at Object.removeTicks (F:\Codes\medical_tourism\node_modules\sequelize\lib\utils.js:415:12)
at Object.quoteIdentifier (F:\Codes\medical_tourism\node_modules\sequelize\lib\dialects\mysql\query-generator.js:393:33)
at Object._getSafeKey (F:\Codes\medical_tourism\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2298:33)
at Object._joinKeyValue (F:\Codes\medical_tourism\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2274:16)
at Object._whereParseSingleValueObject (F:\Codes\medical_tourism\node_modules\sequelize\lib\dialects\abstract\query-generator.js:2332:23) …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js

3
推荐指数
1
解决办法
4937
查看次数

FAB:Drawable已属于另一个所有者

我在片段上添加了两个浮动操作按钮,但始终出现以下错误:

无效的drawable已添加到LayerDrawable!Drawable已经属于另一个所有者,但是没有公开恒定状态

<RelativeLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_margin="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent">

    <ScrollView
        android:layout_weight="1"
        android:id="@+id/scrollView"
        android:layout_marginRight="30dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/layout_main_account">

            <TextView
                android:text="Name"
                android:textStyle="bold"
                android:layout_marginTop="30dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tv_activity_main_account_name_label"/>

            <EditText
                android:enabled="false"
                android:inputType="none"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/et_activity_main_account_name_label_value"/>
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <View
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="0dp"/>

        <android.support.design.widget.FloatingActionButton
            android:backgroundTint="#000"
            android:layout_marginBottom="5dp"
            android:layout_marginRight="10dp"
            app:layout_anchorGravity="bottom"
            android:layout_width="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_edit_account"
            android:id="@+id/fbtn_activity_main_account_edit_account"/>

        <android.support.design.widget.FloatingActionButton
            android:backgroundTint="#000"
            android:layout_marginBottom="5dp"
            app:layout_anchorGravity="bottom"
            android:layout_width="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_home_account"
            android:id="@+id/fbtn_activity_main_account_manage_addresses"
            app:layout_anchor="@id/fbtn_activity_main_account_edit_account"/>

    </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

可绘制-> ic_edit_account.xml

<vector android:height="24dp" android:viewportHeight="60.017"
android:viewportWidth="60.017" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFF" android:pathData="M59.144,3.731l-2.85,-2.851c-1.164,-1.161 -3.057,-1.162 -4.221,0.001l-3.126,3.126H0v56h56V11.097l0.305,-0.305l0,0l2.839,-2.839C60.308,6.789 60.308,4.895 59.144,3.731zM20.047,36.759l3.22,3.22l-4.428,1.208L20.047,36.759zM52.062,12.206L47.82,7.964l1.414,-1.414l4.243,4.242L52.062,12.206zM50.648,13.62L25.192,39.076l-4.242,-4.242L46.406,9.378L50.648,13.62zM54,13.097v44.91H2v-52h44.947L18.829,34.127l-0.188,0.188l-2.121,7.779l-1.226,1.226c-0.391,0.391 -0.391,1.023 …
Run Code Online (Sandbox Code Playgroud)

android floating-action-button

3
推荐指数
1
解决办法
957
查看次数

使用Spring MVC支付Paypal

我正在使用SpringMVC + Paypal付款并发现我写的愚蠢代码(虽然它工作正常).我正在使用paypal表单,将金额,项目名称,成功网址,取消网址等数据提交给PayPal付款.它包含发送数据的隐藏字段,因为我们都知道隐藏的字段不再隐藏:)

任何人都可以右键单击表单并使用inspect元素,并可以更改金额的值.此外,当我完成付款后,我必须单击"返回到...."链接返回到我的页面,在那里我无法读取paypal返回的有关交易的任何数据.

所以我想问一下,在我转移到paypal页面之前是否还有另一种解决方法,我使用我的API密钥获得一些令牌,付款完成后,paypal自动重定向回我的网址(不必点击"返回" ......")我可以在那之后验证交易

我试过并且能够使用谷歌找到一些代码,但他们都使用自己的帐户付款.

在我的应用程序中,客户端必须在到达paypal页面时输入他们的paypal帐户信息

急切地等待回复,谢谢和问候

如果您需要代码,我也会发布我的表单代码,但我知道使用表单和会话进行付款并不是一个好方法

paypal spring-mvc

2
推荐指数
1
解决办法
8625
查看次数

快速路由器不工作

我刚开始表达并使用 yo-generator 来创建我的项目。我面临的问题是路由:

app.get('/something')工作正常,但是

router.get('/something')不工作。我试图研究但无法解决问题。这是我的文件:

应用程序.js

var fs = require('fs');
var http = require('http');
var path = require('path');
var helmet = require('helmet');
var express = require('express');
var root = path.normalize(__dirname + '/');
var constant = require(root + '/app/util/constants.js');

var config = require(constant.APP_CONFIG_FILE);

var app = express();
app.use(helmet());

app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type");
return next();
});

require('./config/express')(app, config);

http.createServer(app).listen(config.WEB_PORT, function() {
console.log('Server listening http on port ' + config.WEB_PORT);
});

module.exports = app;
Run Code Online (Sandbox Code Playgroud)

来自express.js 的行 …

node.js express

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

Mockito 测试服务层

我是 Mockito 的新手,正在尝试测试我的服务层。我的 DAO 层在服务中是 @Autowired 并且 Hibernate 也是自动装配的。测试时 Hibernate 未加载。我总是得到 NullPointerException。这是我的代码:

EmployeeService(接口)

package com.spring.crud.service;

import java.util.List;

import com.spring.crud.entity.Employee;

public interface EmployeeService {

    Employee save(Employee employee);

    boolean update(Employee employee);

    Employee find(Integer id);

    List<Employee> getEmployees();

    boolean remove(Integer id);
}
Run Code Online (Sandbox Code Playgroud)

EmployeeServiceImpl(类)

package com.spring.crud.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.spring.crud.dao.EmployeeDAO;
import com.spring.crud.entity.Employee;

@Service
public class EmployeeServiceImpl implements EmployeeService {

@Autowired
private EmployeeDAO dao;

public Employee save(Employee employee) {

    return dao.save(employee);
}

public boolean update(Employee employee) {

    return dao.update(employee);
}

public Employee …
Run Code Online (Sandbox Code Playgroud)

spring-mvc mockito

0
推荐指数
1
解决办法
9834
查看次数