Laravel Получить предков (URL)

  • Сначала переместите каталог расширения в \ Windows \ System32 \ inetsrv {php} \ extension
  • Измените путь из файла php.ini

I подумайте, что у вас есть проблема с безопасностью при загрузке .dll! Попробуйте это и дайте мне знать результат.


Чтобы узнать, какой файл php.ini был загружен, попробуйте выполнить следующее (запустите в командной строке и веб-сервере, чтобы убедиться, какая версия загружает другую среду).

Проверка пути файла php.ini:

<?php
    $path = php_ini_loaded_file();
    echo 'The loaded file path is :' . $path;
?>
3
задан stackminu 11 March 2019 в 13:49
поделиться

2 ответа

Если вы знаете, сколько уровней может быть вложено, вы можете использовать Eager Loading. Скажем, если максимальная глубина составляет 3 уровня, вы можете сделать:

$model->with('parent.parent.parent');

Вы также можете использовать рекурсию вместо цикла.

public function getParentsAttribute()
{
    if (!$this->parent) {
        return collect([]);
    }

    return collect($this->parent->parents)->push($this->parent);
}

Если вы тоже хотите добавить первый объект (само), полный вызов будет:

$model->parents->push($model)->reverse->implode('attr_name', '/');

, который вы также можете включить в атрибут

public function getPathAttribute() {
    return $model->parents->push($model)->reverse->implode('attr_name', '/');
}
[119 ] И звоните как $model->path;

0
ответ дан Nikolai Kiselev 11 March 2019 в 13:49
поделиться

После небольшого разговора в комментариях я думаю, что это хорошее решение:

// YourModel.php

// Add this line of you want the "parents" property to be populated all the time.
protected $appends = ['parents'];

public function getParentsAttribute()
{
    $collection = collect([]);
    $parent = $this->parent;
    while($parent) {
        $collection->push($parent);
        $parent = $parent->parent;
    }

    return $collection;
}

Затем вы можете найти своих родителей, используя:

Как отметил Николай Киселев https://stackoverflow.com / a / 55103589/1346367 Вы также можете комбинировать это с этим, чтобы сохранить несколько запросов:

protected $with = ['parent.parent.parent'];
// or inline:
YourModel::find(123)->with(['parent.parent.parent']);

Это предварительно загружает родителя при загрузке объекта. Если вы решите не использовать это, родительский (загружается) загружается, как только вы позвоните $yourModel->parent.

0
ответ дан Flame 11 March 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: