mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-02-11 06:28:40 +00:00
parent
3e9c16da28
commit
8710adad62
|
|
@ -80,16 +80,6 @@ use phpOMS\Utils\ArrayUtils;
|
||||||
* Relations by other than primary key
|
* Relations by other than primary key
|
||||||
* Currently relations are always defined by the primary key. It would be very helpful to also define relations by other values.
|
* Currently relations are always defined by the primary key. It would be very helpful to also define relations by other values.
|
||||||
*
|
*
|
||||||
* @todo Orange-Management/phpOMS#189
|
|
||||||
* Allow model creation with ids
|
|
||||||
* The datamapper checks if the model has an non-empty id before it creates the mode.
|
|
||||||
* Some models however can have custom primary keys.
|
|
||||||
* In this case this check should not be done and therefore a $force flag got implemented in order to force the creation of the mode.
|
|
||||||
* This should be changed by checking if the primary key is autoincrement or not.
|
|
||||||
* If it isn't autoincrement the model should be created without an additional flag.
|
|
||||||
* The problem that arises is that now you need to check if the model is already in the database.
|
|
||||||
* This could be done based on the database response (error).
|
|
||||||
*
|
|
||||||
* @todo Orange-Management/phpOMS#212
|
* @todo Orange-Management/phpOMS#212
|
||||||
* Replace nested models which are represented as scalar/id with NullModel
|
* Replace nested models which are represented as scalar/id with NullModel
|
||||||
* Currently there is a default limit on dependency nesting when you request a model from the database.
|
* Currently there is a default limit on dependency nesting when you request a model from the database.
|
||||||
|
|
@ -151,6 +141,14 @@ class DataMapperAbstract implements DataMapperInterface
|
||||||
*/
|
*/
|
||||||
protected static string $primaryField = '';
|
protected static string $primaryField = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Autoincrement primary field.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
protected static bool $autoincrement = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Primary field name.
|
* Primary field name.
|
||||||
*
|
*
|
||||||
|
|
@ -437,13 +435,12 @@ class DataMapperAbstract implements DataMapperInterface
|
||||||
*
|
*
|
||||||
* @param mixed $obj Object reference (gets filled with insert id)
|
* @param mixed $obj Object reference (gets filled with insert id)
|
||||||
* @param int $relations Create all relations as well
|
* @param int $relations Create all relations as well
|
||||||
* @param bool $force Force creation even if id is set in model
|
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*
|
*
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public static function create($obj, int $relations = RelationType::ALL, bool $force = false)
|
public static function create($obj, int $relations = RelationType::ALL)
|
||||||
{
|
{
|
||||||
self::extend(__CLASS__);
|
self::extend(__CLASS__);
|
||||||
|
|
||||||
|
|
@ -453,16 +450,7 @@ class DataMapperAbstract implements DataMapperInterface
|
||||||
|
|
||||||
$refClass = new \ReflectionClass($obj);
|
$refClass = new \ReflectionClass($obj);
|
||||||
|
|
||||||
/**
|
if (!empty($id = self::getObjectId($obj, $refClass)) && static::$autoincrement) {
|
||||||
* @todo Orange-Management/phpOMS#234
|
|
||||||
* Add forced IDs to the mappers
|
|
||||||
* Currently it is required to manually create a model with forced ids.
|
|
||||||
* This should be defined in the mappers in the ID column definition.
|
|
||||||
* ```
|
|
||||||
* 'force_id' => true,
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
if (!empty($id = self::getObjectId($obj, $refClass)) && !$force) {
|
|
||||||
$objId = $id;
|
$objId = $id;
|
||||||
} else {
|
} else {
|
||||||
$objId = self::createModel($obj, $refClass);
|
$objId = self::createModel($obj, $refClass);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user