Trait ModelAwareTrait

Provides functionality for loading table classes and other repositories onto properties of the host object.

Example users of this trait are Cake\Controller\Controller and Cake\Console\Shell.

Namespace: Cake\Datasource

Properties summary

  • $_modelFactories protected
    array

    A list of overridden model factory functions.

  • $_modelType protected
    string

    The model type to use.

  • $modelClass public
    string|false|null

    This object's primary model class name. Should be a plural form.

Method Summary

  • _setModelClass() protected

    Set the modelClass and modelKey properties based on conventions.

  • getModelType() public

    Get the model type to be used by this class

  • loadModel() public

    Loads and constructs repository objects required by this object

  • modelFactory() public

    Override a existing callable to generate repositories of a given type.

  • modelType() public

    Set or get the model type to be used by this class

  • setModelType() public

    Set the model type to be used by this class

Method Detail

_setModelClass() protected

_setModelClass(mixed $name)

Set the modelClass and modelKey properties based on conventions.

If the properties are already set they will not be overwritten

Parameters

string $name

Class name.

getModelType() public

getModelType()

Get the model type to be used by this class

Returns

string

loadModel() public

loadModel(mixed $modelClass, mixed $modelType)

Loads and constructs repository objects required by this object

Typically used to load ORM Table objects as required. Can also be used to load other types of repository objects your application uses.

If a repository provider does not return an object a MissingModelException will be thrown.

Parameters

string|null $modelClass optional

Name of model class to load. Defaults to $this->modelClass. The name can be an alias like 'Post' or FQCN like App\Model\Table\PostsTable::class.

string|null $modelType optional

The type of repository to load. Defaults to the modelType() value.

Returns

\Cake\Datasource\RepositoryInterface

The model instance created.

Throws

Cake\Datasource\Exception\MissingModelException
If the model class cannot be found.
InvalidArgumentException
When using a type that has not been registered.
UnexpectedValueException
If no model type has been defined

modelFactory() public

modelFactory(mixed $type, callable $factory)

Override a existing callable to generate repositories of a given type.

Parameters

string $type

The name of the repository type the factory function is for.

callable $factory

The factory function used to create instances.

modelType() public

modelType(mixed $modelType)

Set or get the model type to be used by this class

Parameters

string|null $modelType optional

The model type or null to retrieve the current

Returns

string|$this

setModelType() public

setModelType(mixed $modelType)

Set the model type to be used by this class

Parameters

string $modelType

The model type

Returns

$this

Property Detail

$_modelFactories protected

A list of overridden model factory functions.

Type

array

$_modelType protected

The model type to use.

Type

string

$modelClass public

This object's primary model class name. Should be a plural form.

CakePHP will not inflect the name.

Example: For an object named 'Comments', the modelClass would be 'Comments'. Plugin classes should use Plugin.Comments style names to correctly load models from the correct plugin.

Use false to not use auto-loading on this object. Null auto-detects based on controller name.

Type

string|false|null

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.9/trait-Cake.Datasource.ModelAwareTrait.html