xPDOForeignKeyConstraint
Last updated Apr 12th, 2019 | Page history | Improve this page | Report an issue
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$306 per month—let's make that $500!
Learn moreWhat Does the Rule Do?¶
This rule tests the validity of a foreign key for a defined relationship.
Using the Rule¶
Here we want to make sure no category ID is assigned to our object that doesnt have a category that exists.
First, our model:
<model package="test" baseClass="xPDOObject" platform="mysql"
defaultEngine="MyISAM" tablePrefix="test_">
<object class="myTest" table="test" extends="xPDOSimpleObject">
<field key="category" dbtype="int" precision="10" attributes="unsigned"
phptype="integer" default="0" null="false" index="index" />
<validation>
<rule field="name"
name="preventBlank"
type="xPDOValidationRule"
rule="xPDOForeignKeyConstraint"
foreign="id"
local="category"
alias="Category"
class="modCategory"
message="The category specified does not exist."
/>
</validation>
<aggregate alias="Category" class="modCategory"
local="category" foreign="id"
cardinality="one" owner="foreign" />
</object>
</model>
From there, go ahead and generate the model from the XML schema. And now in a Snippet we'll call Test:
$output = '';
$modx->addPackage('test','/path/to/my/test/model/','test_');
$obj = $modx->newObject('myTest');
$obj->set('category',123);
$validator = $obj->getValidator();
if ($validator->validate() == false) {
$messages = $validator->getMessages();
foreach ($messages as $errorMsg) {
$output .= $errorMsg['message'];
}
}
This will display, assuming that a category doesn't exist with ID '123':
The category specified does not exist.
Similarly, we could have used the 'name' field as the "foreign" attribute in our schema, if we were setting our myTest object's category field to that name.
See Also¶
- xPDOForeignKeyConstraint
- xPDOMaxLengthValidationRule
- xPDOMaxValueValidationRule
- xPDOMinLengthValidationRule
- xPDOMinValueValidationRule
- xPDOObjectExistsValidationRule
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$306 per month—let's make that $500!
Learn more