CakePHP
  • Documentation
    • Book
    • API
    • Videos
    • Reporting Security Issues
    • Privacy Policy
    • Logos & Trademarks
  • Business Solutions
  • Swag
  • Road Trip
  • Team
  • Community
    • Community
    • Get Involved
    • Issues (Github)
    • Bakery
    • Featured Resources
    • Training
    • Meetups
    • My CakePHP
    • CakeFest
    • Newsletter
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • Help & Support
    • Forum
    • Stack Overflow
    • IRC
    • Slack
    • Paid Support
CakePHP

C CakePHP 4.5 Strawberry API

  • Project:
    • CakePHP
      • CakePHP
      • Authentication
      • Authorization
      • Chronos
      • Elastic Search
      • Queue
  • Version:
    • 4.5
      • 5.2
      • 5.1
      • 5.0
      • 4.6
      • 4.5
      • 4.4
      • 4.3
      • 4.2
      • 4.1
      • 4.0
      • 3.10
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

Namespaces

  • Global
  • Cake
    • Auth
    • Cache
    • Collection
    • Command
    • Console
    • Controller
    • Core
    • Database
    • Datasource
      • Exception
      • Locator
      • Paging
    • Error
    • Event
    • Filesystem
    • Form
    • Http
    • I18n
    • Log
    • Mailer
    • Network
    • ORM
    • Routing
    • Shell
    • TestSuite
    • Utility
    • Validation
    • View

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

Property Summary

  • $_modelFactories protected
    array<callable|Cake\Datasource\Locator\LocatorInterface>

    A list of overridden model factory functions.

  • $_modelType protected
    string

    The model type to use.

  • $modelClass protected
    string|null

    This object's primary model class name. Should be a plural form. CakePHP will not inflect the name.

Method Summary

  • _setModelClass() protected

    Set the modelClass property based on conventions.

  • fetchModel() public

    Fetch or construct a model instance from a locator.

  • getModelType() public

    Get the model type to be used by this class

  • loadModel() public deprecated

    Fetch or construct a model and set it to a property on this object.

  • modelFactory() public

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

  • setModelType() public

    Set the model type to be used by this class

Method Detail

_setModelClass() ¶ protected

_setModelClass(string $name): void

Set the modelClass property based on conventions.

If the property is already set it will not be overwritten

Parameters
string $name

Class name.

Returns
void

fetchModel() ¶ public

fetchModel(string|null $modelClass = null, string|null $modelType = null): Cake\Datasource\RepositoryInterface

Fetch or construct a model instance from a locator.

Uses a modelFactory based on $modelType to fetch and construct a RepositoryInterface and return it. The default modelType can be defined with setModelType().

Unlike loadModel() this method will not set an object property.

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 getModelType() value.

Returns
Cake\Datasource\RepositoryInterface
Throws
Cake\Datasource\Exception\MissingModelException
If the model class cannot be found.
UnexpectedValueException
If $modelClass argument is not provided and ModelAwareTrait::$modelClass property value is empty.

getModelType() ¶ public

getModelType(): string

Get the model type to be used by this class

Returns
string

loadModel() ¶ public

loadModel(string|null $modelClass = null, string|null $modelType = null): Cake\Datasource\RepositoryInterface

Fetch or construct a model and set it to a property on this object.

Uses a modelFactory based on $modelType to fetch and construct a RepositoryInterface and set it as a property on the current object. The default modelType can be defined with setModelType().

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 getModelType() value.

Returns
Cake\Datasource\RepositoryInterface
Throws
Cake\Datasource\Exception\MissingModelException
If the model class cannot be found.
UnexpectedValueException
If $modelClass argument is not provided and ModelAwareTrait::$modelClass property value is empty.

modelFactory() ¶ public

modelFactory(string $type, Cake\Datasource\Locator\LocatorInterface|callable $factory): void

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.

Cake\Datasource\Locator\LocatorInterface|callable $factory

The factory function used to create instances.

Returns
void

setModelType() ¶ public

setModelType(string $modelType): $this

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<callable|Cake\Datasource\Locator\LocatorInterface>

$_modelType ¶ protected

The model type to use.

Type
string

$modelClass ¶ protected

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 empty string to not use auto-loading on this object. Null auto-detects based on controller name.

Type
string|null
OpenHub
Pingping
Linode
  • Business Solutions
  • Showcase
  • Documentation
  • Book
  • API
  • Videos
  • Reporting Security Issues
  • Privacy Policy
  • Logos & Trademarks
  • Community
  • Get Involved
  • Issues (Github)
  • Bakery
  • Featured Resources
  • Training
  • Meetups
  • My CakePHP
  • CakeFest
  • Newsletter
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • Help & Support
  • Forum
  • Stack Overflow
  • IRC
  • Slack
  • Paid Support

Generated using CakePHP API Docs