Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added ability to pass ID as parameter to Model::exists()

  • Loading branch information...
commit 4edb378ef8126bb8239d529f9c200f043c291433 1 parent fd92720
@ADmad ADmad authored
View
14 lib/Cake/Model/Model.php
@@ -2537,19 +2537,23 @@ protected function _collectForeignKeys($type = 'belongsTo') {
}
/**
- * Returns true if a record with the currently set ID exists.
+ * Returns true if a record with particular ID exists.
*
- * Internally calls Model::getID() to obtain the current record ID to verify,
+ * If $id is not passed it calls Model::getID() to obtain the current record ID,
* and then performs a Model::find('count') on the currently configured datasource
* to ascertain the existence of the record in persistent storage.
*
+ * @param mixed $id ID of record to check for existence
* @return boolean True if such a record exists
*/
- public function exists() {
- if ($this->getID() === false) {
+ public function exists($id = null) {
+ if ($id === null) {
+ $id = $this->getID();
+ }
+ if ($id === false) {
return false;
}
- $conditions = array($this->alias . '.' . $this->primaryKey => $this->getID());
+ $conditions = array($this->alias . '.' . $this->primaryKey => $id);
$query = array('conditions' => $conditions, 'recursive' => -1, 'callbacks' => false);
return ($this->find('count', $query) > 0);
}
View
29 lib/Cake/Test/Case/Model/ModelReadTest.php
@@ -25,6 +25,25 @@
class ModelReadTest extends BaseModelTest {
/**
+ * testExists function
+ * @retun void
+ */
+ public function testExists() {
+ $this->loadFixtures('User');
+ $TestModel = new User();
+
+ $this->assertTrue($TestModel->exists(1));
+
+ $TestModel->id = 2;
+ $this->assertTrue($TestModel->exists());
+
+ $TestModel->delete();
+ $this->assertFalse($TestModel->exists());
+
+ $this->assertFalse($TestModel->exists(2));
+ }
+
+/**
* testFetchingNonUniqueFKJoinTableRecords()
*
* Tests if the results are properly returned in the case there are non-unique FK's
@@ -7784,18 +7803,18 @@ public function testGetVirtualField() {
$this->assertEquals($Post->getVirtualField('other_field'), $Post->virtualFields['other_field']);
$this->assertEquals($Post->getVirtualField('Post.other_field'), $Post->virtualFields['other_field']);
}
-
-
+
+
/**
* test that checks for error when NOT condition passed in key and a 1 element array value
*
* @return void
- */
+ */
public function testNotInArrayWithOneValue() {
$this->loadFixtures('Article');
$Article = new Article();
$Article->recursive = -1;
-
+
$result = $Article->find(
'all',
array(
@@ -7804,7 +7823,7 @@ public function testNotInArrayWithOneValue() {
)
)
);
-
+
$this->assertTrue(is_array($result) && !empty($result));
}
}
Please sign in to comment.
Something went wrong with that request. Please try again.