mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-31 09:06:17 +00:00
Fixed duplication of Model's afterFind callback in HABTM relation and content of array passed to that callback [ticket 3970]
This commit is contained in:
parent
49d66af12e
commit
c033df3218
2 changed files with 9 additions and 82 deletions
|
@ -1,79 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* This is core configuration file.
|
||||
*
|
||||
* Use it to configure core behaviour of Cake.
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* For full copyright and license information, please see the LICENSE.txt
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link http://cakephp.org CakePHP(tm) Project
|
||||
* @package app.Config
|
||||
* @since CakePHP(tm) v 0.2.9
|
||||
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||
*
|
||||
* Database configuration class.
|
||||
* You can specify multiple configurations for production, development and testing.
|
||||
*
|
||||
* datasource => The name of a supported datasource; valid options are as follows:
|
||||
* Database/Mysql - MySQL 4 & 5,
|
||||
* Database/Sqlite - SQLite (PHP5 only),
|
||||
* Database/Postgres - PostgreSQL 7 and higher,
|
||||
* Database/Sqlserver - Microsoft SQL Server 2005 and higher
|
||||
*
|
||||
* You can add custom database datasources (or override existing datasources) by adding the
|
||||
* appropriate file to app/Model/Datasource/Database. Datasources should be named 'MyDatasource.php',
|
||||
*
|
||||
*
|
||||
* persistent => true / false
|
||||
* Determines whether or not the database should use a persistent connection
|
||||
*
|
||||
* host =>
|
||||
* the host you connect to the database. To add a socket or port number, use 'port' => #
|
||||
*
|
||||
* prefix =>
|
||||
* Uses the given prefix for all the tables in this database. This setting can be overridden
|
||||
* on a per-table basis with the Model::$tablePrefix property.
|
||||
*
|
||||
* schema =>
|
||||
* For Postgres/Sqlserver specifies which schema you would like to use the tables in. Postgres defaults to 'public'. For Sqlserver, it defaults to empty and use
|
||||
* the connected user's default schema (typically 'dbo').
|
||||
*
|
||||
* encoding =>
|
||||
* For MySQL, Postgres specifies the character encoding to use when connecting to the
|
||||
* database. Uses database default not specified.
|
||||
*
|
||||
* unix_socket =>
|
||||
* For MySQL to connect via socket specify the `unix_socket` parameter instead of `host` and `port`
|
||||
*/
|
||||
class DATABASE_CONFIG {
|
||||
|
||||
public $default = array(
|
||||
'datasource' => 'Database/Mysql',
|
||||
'persistent' => false,
|
||||
'host' => 'localhost',
|
||||
'login' => 'user',
|
||||
'password' => 'password',
|
||||
'database' => 'database_name',
|
||||
'prefix' => '',
|
||||
//'encoding' => 'utf8',
|
||||
);
|
||||
|
||||
public $test = array(
|
||||
'datasource' => 'Database/Mysql',
|
||||
'persistent' => false,
|
||||
'host' => 'localhost',
|
||||
'login' => 'user',
|
||||
'password' => 'password',
|
||||
'database' => 'test_database_name',
|
||||
'prefix' => '',
|
||||
//'encoding' => 'utf8',
|
||||
);
|
||||
}
|
|
@ -1112,7 +1112,7 @@ class DboSource extends DataSource {
|
|||
$db->queryAssociation($model, $linkModel, $type, $assoc, $assocData, $array, true, $resultSet, $model->recursive - 1, $stack);
|
||||
unset($db);
|
||||
|
||||
if ($type === 'hasMany') {
|
||||
if ($type === 'hasMany' || $type === 'hasAndBelongsToMany') {
|
||||
$filtered[] = $assoc;
|
||||
}
|
||||
}
|
||||
|
@ -1138,7 +1138,10 @@ class DboSource extends DataSource {
|
|||
* @return array Array of results that have been filtered through $model->afterFind
|
||||
*/
|
||||
protected function _filterResults(&$results, Model $model, $filtered = array()) {
|
||||
$current = reset($results);
|
||||
if (!is_array($results)) {
|
||||
return array();
|
||||
}
|
||||
$current = reset($results);
|
||||
if (!is_array($current)) {
|
||||
return array();
|
||||
}
|
||||
|
@ -1252,6 +1255,9 @@ class DboSource extends DataSource {
|
|||
} else {
|
||||
$fetch = null;
|
||||
}
|
||||
if ($queryData['callbacks'] === true || $queryData['callbacks'] === 'after') {
|
||||
$this->_filterResults($fetch, $model);
|
||||
}
|
||||
}
|
||||
|
||||
$modelAlias = $model->alias;
|
||||
|
@ -1312,7 +1318,7 @@ class DboSource extends DataSource {
|
|||
} else {
|
||||
$this->_mergeAssociation($row, $fetch, $association, $type, $selfJoin);
|
||||
}
|
||||
if (isset($row[$association])) {
|
||||
if (isset($row[$association]) && $type !== 'hasAndBelongsToMany') {
|
||||
$row[$association] = $linkModel->afterFind($row[$association], false);
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue