FieldOrLanguageJoin
class FieldOrLanguageJoin extends JoinPluginBase (View source)
Implementation for the "field OR language" join.
If the extra conditions contain either ".langcode" or ".bundle", they will be grouped and joined with OR instead of AND. The entire group will then be joined to the other conditions with AND.
This is needed for configurable fields that are translatable on some bundles and untranslatable on others. The correct field values to fetch in this case have a langcode that matches the entity record or have a bundle on which the field is untranslatable. Thus, the entity base table (or data table, or revision data table, respectively) must join the field data table (or field revision table) on a matching langcode or a bundle where the field is untranslatable. The following example views data achieves this for a node field named 'field_tags' which is translatable on an 'article' node type, but not on the 'news' and 'page' node types:
Traits
Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.
Provides dependency injection friendly methods for serialization.
Provides a trait for the messenger service.
Constants
| DERIVATIVE_SEPARATOR |
A string which is used to separate base plugin IDs from the derivative ID. |
Properties
| protected string | $pluginId | The plugin_id. |
from PluginBase |
| protected array | $pluginDefinition | The plugin implementation definition. |
from PluginBase |
| array | $configuration | The configuration array passed by initJoin. |
from JoinPluginBase |
| protected TranslationInterface | $stringTranslation | The string translation service. |
from StringTranslationTrait |
| protected array | $_serviceIds | An array of service IDs keyed by property name used for serialization. |
from DependencySerializationTrait |
| protected array | $_entityStorages | An array of entity type IDs keyed by the property name of their storages. |
from DependencySerializationTrait |
| protected MessengerInterface | $messenger | The messenger. |
from MessengerTrait |
| string | $table | The table to join (right table). |
from JoinPluginBase |
| string | $field | The field to join on (right field). |
from JoinPluginBase |
| string | $leftTable | The table we join to. |
from JoinPluginBase |
| string | $leftField | The field we join to. |
from JoinPluginBase |
| string | $leftFormula | A formula to be used instead of the left field. |
from JoinPluginBase |
| array | $extra | An array of extra conditions on the join. |
from JoinPluginBase |
| string | $type | The join type, so for example LEFT (default) or INNER. |
from JoinPluginBase |
| string | $extraOperator | How all the extras will be combined. Either AND or OR. |
from JoinPluginBase |
| bool | $adjusted | Defines whether a join has been adjusted. |
from JoinPluginBase |
Methods
Constructs a Drupal\views\Plugin\views\join\JoinPluginBase object.
Translates a string to the current language or to a given language.
Formats a string containing a count of items.
Returns the number of plurals supported by a given language.
Gets the string translation service.
Builds the SQL for the join this object represents.
Adds the extras to the join condition.
Builds a single extra condition.
Details
__construct(array $configuration, string $plugin_id, mixed $plugin_definition)
Constructs a Drupal\views\Plugin\views\join\JoinPluginBase object.
string
getPluginId()
Gets the plugin_id of the plugin instance.
string
getBaseId()
Gets the base_plugin_id of the plugin instance.
string|null
getDerivativeId()
Gets the derivative_id of the plugin instance.
array
getPluginDefinition()
Gets the definition of the plugin implementation.
bool
isConfigurable()
Determines if the plugin is configurable.
protected TranslatableMarkup
t(string $string, array $args = [], array $options = [])
Translates a string to the current language or to a given language.
See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.
In order for strings to be localized, make them available in one of the ways supported by the
protected
formatPlural($count, $singular, $plural, array $args = [], array $options = [])
Formats a string containing a count of items.
protected
getNumberOfPlurals($langcode = NULL)
Returns the number of plurals supported by a given language.
protected TranslationInterface
getStringTranslation()
Gets the string translation service.
$this
setStringTranslation(TranslationInterface $translation)
Sets the string translation service to use.
__sleep()
{@inheritdoc}
__wakeup()
{@inheritdoc}
setMessenger(MessengerInterface $messenger)
Sets the messenger.
MessengerInterface
messenger()
Gets the messenger.
buildJoin($select_query, $table, QueryPluginBase $view_query)
Builds the SQL for the join this object represents.
When possible, try to use table alias instead of table names.
protected
joinAddExtra(array $arguments, string $condition, array $table, SelectInterface $select_query, array $left_table = NULL)
Adds the extras to the join condition.
protected string
buildExtra(array $info, array $arguments, array $table, SelectInterface $select_query, array $left)
Builds a single extra condition.