75 lines
2.5 KiB
PHP
75 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* @package FOF
|
|
* @copyright Copyright (c)2010-2021 Nicholas K. Dionysopoulos / Akeeba Ltd
|
|
* @license GNU General Public License version 2, or later
|
|
*/
|
|
|
|
namespace FOF30\Model\DataModel\Relation;
|
|
|
|
defined('_JEXEC') || die;
|
|
|
|
use FOF30\Model\DataModel;
|
|
|
|
/**
|
|
* BelongsTo (reverse 1-to-1 or 1-to-many) relation: this model is a child which belongs to the foreign table
|
|
*
|
|
* For example, parentModel is Articles and foreignModel is Users. Each article belongs to one user. One user can have
|
|
* one or more article.
|
|
*
|
|
* Example #2: parentModel is Phones and foreignModel is Users. Each phone belongs to one user. One user can have zero
|
|
* or one phones.
|
|
*/
|
|
class BelongsTo extends HasOne
|
|
{
|
|
/**
|
|
* Public constructor. Initialises the relation.
|
|
*
|
|
* @param DataModel $parentModel The data model we are attached to
|
|
* @param string $foreignModelName The name of the foreign key's model in the format
|
|
* "modelName@com_something"
|
|
* @param string $localKey The local table key for this relation, default: parentModel's ID field
|
|
* name
|
|
* @param string $foreignKey The foreign key for this relation, default: parentModel's ID field name
|
|
* @param string $pivotTable IGNORED
|
|
* @param string $pivotLocalKey IGNORED
|
|
* @param string $pivotForeignKey IGNORED
|
|
*/
|
|
public function __construct(DataModel $parentModel, $foreignModelName, $localKey = null, $foreignKey = null, $pivotTable = null, $pivotLocalKey = null, $pivotForeignKey = null)
|
|
{
|
|
parent::__construct($parentModel, $foreignModelName, $localKey, $foreignKey, $pivotTable, $pivotLocalKey, $pivotForeignKey);
|
|
|
|
if (empty($localKey))
|
|
{
|
|
/** @var DataModel $foreignModel */
|
|
$foreignModel = $this->getForeignModel();
|
|
$foreignModel->setIgnoreRequest(true);
|
|
|
|
$this->localKey = $foreignModel->getIdFieldName();
|
|
}
|
|
|
|
if (empty($foreignKey))
|
|
{
|
|
if (!isset($foreignModel))
|
|
{
|
|
/** @var DataModel $foreignModel */
|
|
$foreignModel = $this->getForeignModel();
|
|
$foreignModel->setIgnoreRequest(true);
|
|
}
|
|
|
|
$this->foreignKey = $foreignModel->getIdFieldName();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This is not supported by the belongsTo relation
|
|
*
|
|
* @throws DataModel\Relation\Exception\NewNotSupported when it's not supported
|
|
*/
|
|
public function getNew()
|
|
{
|
|
throw new DataModel\Relation\Exception\NewNotSupported("getNew() is not supported by the belongsTo relation type");
|
|
}
|
|
|
|
}
|