Nano Hash - криптовалюты, майнинг, программирование

Пользователи не связаны с LastBookmarks

Я следую учебнику Lynda по основам cakephp 3 и столкнулся с проблемой. Задача заключалась в том, что при просмотре одного пользователя, эта сущность пользователей также должна содержать информацию о его последней добавленной закладке.

Итак, что сделал парень на уроке:

в таблице закладок я добавил одно отношение hasOne

class BookmarksTable extends Table
{
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->table('bookmarks');
        $this->displayField('title');
        $this->primaryKey('id');

        $this->addBehavior('Timestamp');

        $this->belongsTo('Users', [
            'foreignKey' => 'user_id'
        ]);
        $this->belongsToMany('Tags', [
            'foreignKey' => 'bookmark_id',
            'targetForeignKey' => 'tag_id',
            'joinTable' => 'bookmarks_tags'
        ]);

        // i have added this line
        $this->hasOne('LastBookmarks', [
            'className' => 'Bookmarks',
            'foreignKey' => 'user_id'
        ]);
    }

И мой usersController я добавил LastBookmarks в содержащий массив

    public function view($id = null)
    {
        $user = $this->Users->get($id, [
            'contain' => ['Bookmarks', 'LastBookmarks']
        ]);

        $this->set('user', $user);
        $this->set('_serialize', ['user']);
    }

И ошибка, которую я получаю, это Users is not associated with LastBookmarks Это экран печати с ошибкой, которую я получаю, когда нажимаю просмотр для одного пользователя введите здесь описание изображения

Как я могу преодолеть свою проблему? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать и предоставить. Спасибо

09.01.2017

Ответы:


1

Вы пытаетесь выполнить поиск в таблице Users, поэтому вам не хватает связи с этой таблицей.

class UsersTable extends Table
{

    public function initialize(array $config)
    {
        $this->hasOne('LastBookmarks');
    }
}

Это может быть не совсем правильно для вас, но в основном ошибка говорит вам, что таблица Users не знает, что такое LastBookmark, потому что она не связана с ней.

https://book.cakephp.org/3.0/en/orm/associations.html

Добавьте корректирующую ассоциацию, которая UsersTable должна быть связана с LastBookmarksTable.

09.01.2017
  • да ты прав. Думается, таблицы LastBookmarks нет... В туториале есть таблица Bookmarks и Users. Но потом каким-то образом парень делает информацию lastbookmark о пользователе через код $this-›hasOne('LastBookmark'). В любом случае добавление этой ассоциации в таблицу пользователей сработало для меня. Спасибо 09.01.2017
  • эххх, теперь я понял: D код, который я добавил, должен быть не в BookmarksTable, а в UsersTable: D Спасибо, чувак! 09.01.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..