Xpressengine\DynamicField\AbstractType::join PHP Method

join() public method

table join
public join ( DynamicQuery $query, ConfigEntity $config = null ) : Builder
$query Xpressengine\Database\DynamicQuery query builder
$config Xpressengine\Config\ConfigEntity config entity
return Illuminate\Database\Query\Builder
    public function join(DynamicQuery $query, ConfigEntity $config = null)
    {
        if ($config === null) {
            $config = $this->config;
        }
        if ($config->get('use') === false) {
            return $query;
        }
        $baseTable = $query->from;
        $createTableName = $this->handler->getConfigHandler()->getTableName($config);
        if ($query->hasDynamicTable($createTableName) === true) {
            return $query;
        }
        $query->leftJoin($createTableName, function (JoinClause $join) use($createTableName, $config, $baseTable) {
            $join->on(sprintf('%s.%s', $baseTable, $config->get('joinColumnName')), '=', sprintf('%s.dynamicFieldTargetId', $createTableName));
        });
        $query->setDynamicTable($createTableName);
        return $query;
    }