小编Jon*_*eir的帖子

通过相关表格按照Laravel 5.1中POINT的距离排序

我试图按照events他们与用户提交的邮政编码和距离的距离来订购.

我附上了我的数据库表及其关系的示例,您可以看到geom与多个地址相关联,postcode并且地址可以与多个表相关联(在本例中为事件表).

示例数据库表

我正在从最终用户那里获取一个邮政编码以及以英里为单位的半径来检索适当的事件,下面是我在Eloquent中实现这一目标的示例.

/**
 * Extend locale method which initially only gets lat/long for given postcode to search
 *
 * @param \Illuminate\Database\Eloquent\Builder $query The query builder
 * @param \App\Http\Requests\SearchRequest $request The search request
 * @return void
 */
protected function locale(Builder $query, SearchRequest $request)
{
    $postcode = $this->formatPostcode($request->postcode);

    $geom = Geom::query()->where('postcode', $postcode)->first();
    if (! $geom || Cache::has('postcodeAPIFailed')) {
        return;
    }

    $lat = $geom->geo_location['lat'];
    $long = $geom->geo_location['long'];

    // Top-left point of bounding box
    $lat1 = $lat …
Run Code Online (Sandbox Code Playgroud)

geometry point sql-order-by eloquent laravel-5

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

查询生成器中不存在 Get onlyTrashed()

我正在尝试从表消息中获取废弃的行:

public function trash() {
    return $this->onlyTrashed()
        ->where('user_id', '=', $this->_u)
        ->orWhere('receiver', '=', $this->_u)
        ->orderBy('deleted_at', 'desc')->get();
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Method Illuminate\Database\Query\Builder::onlyTrashed does not exist.
Run Code Online (Sandbox Code Playgroud)

我检查了 Builder 和 SoftDeletes 文件中是否有 onlyTrashed 方法,但它不存在,如何从消息表中查找已删除的消息?

我想到的唯一方法是创建一个方法,当delete_at不为空时,不返回消息,而trashed只返回那些不为空的消息。但我仍然想知道为什么这不起作用,因为它在以下网址的文档中:

https://laravel.com/docs/5.6/eloquent#soft-deleting

更多信息

是的,它在模型内部,是的,我添加了使用 SoftDeletes:

use Illuminate\Database\Eloquent\SoftDeletes;- 在上面

use SoftDeletes;开课后

让我将整个模型粘贴到此处:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\DB;

class Messages extends Model
{

use SoftDeletes;

protected $fillable = [
    'user_id', 'subject', 'text', 'receiver'
];

public $_u;

protected $dates = ['deleted_at'];

public function __construct() {
    $this->_u = auth()->user()->user_id; …
Run Code Online (Sandbox Code Playgroud)

soft-delete laravel laravel-5.6

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

PHP:SQLite将值作为字符串返回

我在Laravel中使用SQLite,发现所有值都以字符串形式返回时非常烦人.有没有办法启用自动类型转换(如MySQL本机驱动程序[mysqlnd]那样)?
我知道$casts属性,我正在寻找一个独立于应用程序的解决方案,让数据库驱动程序进行转换.
谢谢!

php sqlite laravel

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

XPath:选择以下兄弟姐妹直到某个班级

我有以下html代码段:

<table>
    <tr>
        <td class="foo">a</td>
            <td class="bar">1</td>
            <td class="bar">2</td>
        <td class="foo">b</td>
            <td class="bar">3</td>
            <td class="bar">4</td>
            <td class="bar">5</td>
        <td class="foo">c</td>
            <td class="bar">6</td>
            <td class="bar">7</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个XPath 1.0表达式,它从一个.foo元素开始,并.bar在下一个元素之前选择所有后续.foo元素.
例如:我开始a并且只想选择12.
或者我开始b并想要选择3,45.

背景:我必须为此方法找到一个XPath表达式(使用Java和Selenium):

public List<WebElement> bar(WebElement foo) {
    return foo.findElements(By.xpath("./following-sibling::td[@class='bar']..."));
}
Run Code Online (Sandbox Code Playgroud)

有办法解决问题吗?
表达式应该适用于所有.foo元素,而不使用任何外部变量.

谢谢你的帮助!

更新:这些特殊情况显然没有解决方案.但是如果您的限制较少,则提供的表达式可以完美地运行.

xpath

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

(Laravel) 通过数据透视表的多态关系

比方说,我有一个 Event 模型,它通过多态关系和一个数据透视表(EventParticipant)有更多的各种模型(Player、Coach、Admin)的参与者,其中还包含一个布尔列participate。我想通过 $event->participants 获取参与者,它通过多态关系检索球员、教练和管理员的集合。

我在训练中使用标准非多态关系创建了类似的东西,如下所示:

class Training extends Model
{
    /**
    * Training has more players.
    */
    public function players() {
        return $this->belongsToMany('App\Player', 'training_player')
            ->using('App\TrainingPlayer')
            ->withPivot('participate');
    }
}

class TrainingPlayer extends Pivot
{
    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'participate' => 'boolean'
    ];
}
Run Code Online (Sandbox Code Playgroud)

在事件的情况下如何修改,参与者()可以是玩家、教练或管理员模型?(也许与 MorphPivot 类有关,但我无法想象如何。)

(而不是player_id(在 TrainingPlayer 类中)指id的是 Player 模型,有两列rolerollable_id(在 EventParticipant …

polymorphism pivot relationship laravel

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

从Laravel 5.1升级到Laravel 5.8后,where(Has())变慢

我通过设置一个新的5.8项目并复制文件并在此处和此处进行一些调整,将应用程序从Laravel 5.1切换到Laravel 5.8。

问题是在哪里有查询变得非常慢。

这是示例代码:

Article::whereHas('categories', function ($category) {
            $category->where('link', 'foto');
        })
        ->active()
        ->recent()
        ->take(3)
        ->get();
Run Code Online (Sandbox Code Playgroud)

此代码在Laravel 5.1上生成以下查询,并在0.05-0.07秒内完成。

SELECT *
FROM `articles`
WHERE `articles`.`deleted_at` IS NULL
  AND
    (SELECT count(*)
     FROM `categories`
     INNER JOIN `article_category` 
       ON `categories`.`id` = `article_category`.`category_id`
     WHERE `article_category`.`article_id` = `articles`.`id`
       AND `link` = 'foto'
       AND `categories`.`deleted_at` IS NULL) >= 1
ORDER BY IFNULL(published_at, created_at) DESC
LIMIT 3
Run Code Online (Sandbox Code Playgroud)

这是解释:

+------+--------------------+------------------+------+--------------------------------------------------------------------------+-------------------------------------+---------+-----------------+------+----------+------------------------------------+
| id   | select_type        | table            | type | possible_keys                                                            | key                                 | key_len | ref             | rows | …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb laravel eloquent laravel-5.8

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

在 MySQL 和 MariaDB 上按 JSON 数组列对行进行排序

PostgreSQL 允许按数组对行进行排序。它比较每个数组的第一个值,然后比较第二个值,依此类推(fiddle):

select array[2, 4] as "array"
union
select array[10] as "array"
union
select array[2, 3, 4] as "array"
union
select array[10, 11] as "array"
order by "array"
Run Code Online (Sandbox Code Playgroud)
大批
[2,3,4]
[2, 4]
[10]
[10, 11]

MySQL 和 MariaDB 上最接近的等效项似乎是JSON 数组

MySQL 显然或多或少随机地按长度对数组进行排序( fiddle):

select json_array(2, 4) as `array`
union
select json_array(10) as `array`
union
select json_array(2, 3, 4) as `array`
union
select json_array(10, 11) as `array`
order by `array`
Run Code Online (Sandbox Code Playgroud)
大批
[10]
[2, 4] …

mysql json sql-order-by mariadb mysql-json

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

Laravel dusk chrome 驱动程序超时

任何人都可以帮忙吗,我无法让 Laravel dusk 在 mac high Sierra 上当前的 Laravel 5.6 项目中运行默认示例测试。

错误信息

时间:2.5 分钟,内存:14.00MB

有 1 个错误:

1) Tests\Browser\ExampleTest::testBasicExample Facebook\WebDriver\Exception\WebDriverCurlException:http POST 到 /session 时抛出 Curl 错误,参数为:{“desiredCapability”:{“browserName”:“chrome”,“platform”:“ANY ","chromeOptions":{"binary":"/Users/keith/Desktop/dusk/vendor/laravel/dusk/bin/chromedriver-mac","args":["--disable-gpu"]}}}

操作在 30002 毫秒后超时,收到 0 字节

/Users/keith/Desktop/dusk/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:286 /Users/keith/Desktop/dusk/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:126 /Users /keith/Desktop/dusk/tests/DuskTestCase.php:40 /Users/keith/Desktop/dusk/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:189 /Users/keith/Desktop/dusk/vendor/laravel /framework/src/Illuminate/Support/helpers.php:770 /Users/keith/Desktop/dusk/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:190 /Users/keith/Desktop/dusk/vendor/laravel /dusk/src/Concerns/ProvidesBrowser.php:92 /Users/keith/Desktop/dusk/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:64 /Users/keith/Desktop/dusk/tests/Browser/ExampleTest .php:21

我已经完成了以下操作:

  • 将以下内容添加到 app\Providers\AppServiceProvider.php

使用 Laravel\Dusk\DuskServiceProvider;

...

public function register()

{

    if ($this->app->environment('local', 'testing')) {

        $this->app->register(DuskServiceProvider::class);
    }

}
Run Code Online (Sandbox Code Playgroud)
  • 在终端中运行“php artisan dusk:install”
  • 将 .env 中的 App_URL 设置为http://localhost:8000
  • 在 DuskTestCase 中指定了 chromedriver 的位置
  • 在运行“php artisan dusk”之前启动“php artisanserve” …

macos laravel laravel-dusk

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

Laravel Migration失速并且什么都不做

刚刚完成了Laravel网站上列出的所有步骤,安装并启动并运行MacOS HighSierra.我目前安装了Composer,Homebrew,valet,PHP 7.2.8,MySQL 8.0.11和Laravel 5.6.28.我可以通过执行Laravel new blog命令创建一个新项目,而不会有任何问题.此外,当我访问我的浏览器时,我可以看到我刚刚创建或正在处理的当前项目.我可以运行valet list命令,所以我知道它的运行/工作.我也可以创建一个迁移,并通过运行它来显示在我的项目中php artisan make:migration test_test_test.

PATH也有~/.composer/vendor/bin它.

我的.env文件看起来像这样

APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog        
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1 
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
Run Code Online (Sandbox Code Playgroud)

我运行php artisan migrate -vvv命令,它运行并停止/挂起,没有输出.我必须ctl-c才能摆脱它.尝试过-v /-vv,做了同样的事情.

我创建了一个名为的数据库blog,甚至test手动添加了一个表,以确保数据库正在运行/运行.

更新

继续前进并卸载MySQL并重新安装它.我能够运行php artisan migrate -v命令并收到此错误.

现在我收到了这个错误.

MacBook-Pro:anything computername$ …
Run Code Online (Sandbox Code Playgroud)

php mysql homebrew laravel artisan-migrate

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

如何在Laravel中使用hasMany关系和hasMany获取数据?

我有两个表(项目,任务)。

projects表结构如下所示:

id - title - desc - others_column
1  - title - desc - others
2  - title - desc - others
Run Code Online (Sandbox Code Playgroud)

任务表结构如下所示:

id - title - desc - project_id - parent_id - others_column    
1  - title - desc -     1      -    null   -   others    
2  - title - desc -     1      -     1     -   others    
3  - title - desc -     2      -    null   -   others    
4  - title - desc -     2      -     3     -   others
Run Code Online (Sandbox Code Playgroud)

我试图查询,项目控制器看起来像这样。 …

php relation laravel-5

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