小编Amo*_*Amo的帖子

Laravel父/子关系在同一型号上

设置和虚拟数据

我有一个名为Category的简单模型,它具有以下模式:

|----------------------------------------------|
| cat_id   | cat_name    | parent_id           |
|----------------------------------------------|
|   1      | Home        |   0                 |
|----------------------------------------------|
|   2      | Products    |   1                 |
|----------------------------------------------| 
|   3      | Services    |   1                 |
|----------------------------------------------|
|   4      | Product A   |   2                 |
|----------------------------------------------|
|   5      | Product B   |   2                 |
|----------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

期望的输出

所以你可以看到我们将得到一个非常直接的层次结构,如下所示:

Home
  - Products
      - Product A
      - Product B
  - Services
Run Code Online (Sandbox Code Playgroud)

问题

我正在尝试在Laravel 4.2中映射这种关系,以便我可以查询模型并获取其父项(它将始终具有父项)和子项类别(如果它们存在).

我使用以下方法在Category模型中定义了关系:

public function children()
{
    return $this->hasMany('Category', 'parent_id', 'cat_id');
}
public …
Run Code Online (Sandbox Code Playgroud)

php laravel

13
推荐指数
2
解决办法
3万
查看次数

如果count为零,MySQL将执行子查询

我有三个表:monthly_revenue,currenciesforeign_exchange.

monthly_revenue表

|------------------------------------------------------|
| id | product_id | currency_id | value | month | year |
|------------------------------------------------------|
| 1  | 1          | 1           | 100   | 1     | 2015 |
| 2  | 1          | 2           | 125   | 1     | 2015 |
| 3  | 1          | 3           | 115   | 1     | 2015 |
| 4  | 1          | 1           | 100   | 2     | 2015 |
| 5  | 1          | …
Run Code Online (Sandbox Code Playgroud)

mysql

12
推荐指数
2
解决办法
327
查看次数

Javascript在数组中找不到最接近的数字

例如[300, 500, 700, 1000, 2000, 3000],我有一个数字数组,我想找到最接近的数字,而不是在给出的数字之下.

例如,搜索2200将返回3000(不是2000).

但是,如果我搜索3200,因为数组中没有更高的值,它应返回3000,因为没有其他选择.

我可以使用以下值获得最接近该值的数字:

if (sizeToUse == null || Math.abs(this - monitorWidth) < Math.abs(sizeToUse - monitorWidth)) {
                sizeToUse = this;
            }
Run Code Online (Sandbox Code Playgroud)

但是,我无法完成所有工作.我的完整代码是:

$(function() {

var monitorWidth = window.screen.availWidth,
    sizeToUse = null,
    upscaleImages = false;

$('.responsive-img').each(function(){

    var sizeData = $(this).attr('data-available-sizes');
    sizeData = sizeData.replace(' ', '');

    var sizesAvailable = sizeData.split(',');
    sizesAvailable.sort(function(a, b){return b-a});

    $.each(sizesAvailable, function(){
        if(upscaleImages){
            if (sizeToUse == null || Math.abs(this - monitorWidth) < Math.abs(sizeToUse - monitorWidth)) {
                sizeToUse = this;
            }
        }
        else{ …
Run Code Online (Sandbox Code Playgroud)

javascript

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

PHPUnit测试file_get_contents

我有一个类,它有一个利用PHP的全局file_get_contents函数的方法.我需要在类上测试方法,而不是实际调用全局函数.

我知道我可以使用命名空间来覆盖返回的内容file_get_contents,但是我的测试已经在一个单独的命名空间中,所以我不能简单地将命名空间与类匹配.

这是一些代码:

班级

<?php
namespace MyVendor\MyProject;

class MyClass
{

private $someProperty;

public function __construct($override = '')
{
    $this->someProperty = $override;
}

public function myMethod()
{
    $request = 'http://example.com';
    $response = $this->someMethodUsingGlobals($request);
    // Do something with the response..
}
public function someMethodUsingGlobals($url)
{
    return json_decode(file_get_contents($url),true)['results'][0];
}

}
Run Code Online (Sandbox Code Playgroud)

考试

<?php
namespace MyProjectTests;

public function test_it_does_something_with_the_response()
{
    $sut = new MyClass();

    $response = $sut->myMethod();

    $this->assertEquals('Some expectation', $response);
}
Run Code Online (Sandbox Code Playgroud)

我需要someMethodUsingGlobals()在类上模拟该方法,但不完全确定如何去做.

testing phpunit unit-testing mocking

8
推荐指数
2
解决办法
5924
查看次数

MySQL将多行合并为一行并维护列名

表格

表和一些虚拟数据来说明问题.

会员

存储有关成员的基本信息.

------------------------------------
| member_id  | email               |
------------------------------------
| 1          | 1@a.com             |
------------------------------------
| 2          | 2@a.com             |
------------------------------------
| 3          | 3@a.com             |
------------------------------------
| 4          | 4@a.com             |
------------------------------------
| 5          | 4@a.com             |
------------------------------------
Run Code Online (Sandbox Code Playgroud)

member_data

为每个成员存储一些额外的元数据

----------------------------------------
| member_id | name | surname | company |
----------------------------------------
|  1        | A    |    A    |   A     |
----------------------------------------
|  2        | B    |    B    |   B     |
----------------------------------------
|  3        | C    |    C …
Run Code Online (Sandbox Code Playgroud)

mysql

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

PHP字符串不允许<和>字符

根据以下示例,我的代码中有一个字符串:

<?php
$find = '<tag';
$string = 'blah blah <tag=something>';
?>
Run Code Online (Sandbox Code Playgroud)

很简单,但是当我尝试回显字符串时,它不喜欢<或>字符.所有得到回应的是:

等等等等

所以,基本上我猜我需要转义这些字符,让他们在工作PHP但林不知道到底如何.我正在将它用于模板系统,因此在html文件中可以使用以下命令包含文件:

<include="filename.html">
Run Code Online (Sandbox Code Playgroud)

所以我不需要随时在屏幕上显示<和>字符,我只需要阅读文件,找到这些标签的实例并做一些魔术.我已经完成了所有这部分工作,但它只是包含多于/少于运算符的任何字符串,似乎无法正常工作.

有任何想法吗?

php string

5
推荐指数
2
解决办法
9219
查看次数

量角器 - 见页面上的文字

我正在尝试在Protractor中编写测试,而没有将我的测试高度耦合到页面的特定标记.

例如,给定典型的登录页面,我想测试如果提供的凭据不正确,则会显示错误消息.

我的标记显示该错误的方式是:

<div class="alert alert-danger">
    <ul>
        <li>Invalid username or password.</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

这个无序列表也可能包含其他错误 - 所以我不想在列表元素本身上做出断言.在任何情况下,我可能决定不再将错误显示为列表,并且可能希望以其他方式显示错误.

我想要的是能够断言该页面包含:无效的用户名或密码.

我希望能够做到这样的事情:

expect(page.getContents()).to.contain('Invalid username or password.'); 
Run Code Online (Sandbox Code Playgroud)

但当然这不起作用.

Protractor中是否有任何方法可以让我这样做?

javascript testing protractor e2e-testing

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

MySQL使用SELECT从另一个表中插入INTO以及其他数据

我正在努力实现的目标

我正在尝试将一个表中的记录插入另一个表中,但也添加了非第二个表中的其他数据.

示例问题

我正在尝试将insert field1,field2和field3放入tableA.field1和field2来自tableB.但是,field3是我将使用我的应用程序填充的一些额外的任意数据.

查询到目前为止

INSERT INTO tableA (field1, field2, field3) SELECT (field1, field2) FROM tableB WHERE id='1'
Run Code Online (Sandbox Code Playgroud)

问题

由于上述查询在查询中没有字段,因此此时未插入Field3.我试过了:

INSERT INTO tableA (field1, field2, field3) (SELECT (field1, field2) FROM tableB WHERE id='1'), 'somevalue';
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.

我不希望将field3设置为NULL或空字符串.我需要填充该列,但是我需要使用来自INSERT范围之外的数据来填充它.在上面的例子中,它应该是'somevalue'.

mysql

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