Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Core/src/Model/Behavior/LinkedModelBehavior.php
<?php

namespace Croogo\Core\Model\Behavior;

use
Cake\Database\Exception;
use
Cake\Error\Debugger;
use
Cake\Log\Log;
use
Cake\ORM\Behavior;
use
Cake\ORM\Entity;
use
Cake\ORM\Query;
use
Cake\ORM\ResultSet;
use
Cake\ORM\TableRegistry;

class
LinkedModelBehavior extends Behavior
{

    protected
$_defaultConfig = [
       
'modelField' => 'model',
       
'foreignKeyField' => 'foreign_key'
   
];

    public function
findRelatedEntity(Query $query)
    {
       
$query->formatResults(function (ResultSet $resultSet) {
            return
$resultSet->map(function (Entity $entity) {
                try {
                   
$entity->related = $this->relatedTable($entity)->get($entity->get($this->config('foreignKeyField')));
                } catch (
Exception $e) {
                   
Log::error(Debugger::trace());
                }

                return
$entity;
            });
        });

        return
$query;
    }

   
/**
     * @param Entity $comment
     * @return \Cake\ORM\Table
     */
   
public function relatedTable(Entity $comment)
    {
        return
TableRegistry::get($comment->get($this->config('modelField')));
    }
}