I have a model Product
that belongs to a Trend
:
class Product extends Eloquent {
public function trend()
{
return $this->belongsTo('Trend');
}
}
And as part of my validation rules I would like to check that this relationship exists, and if not trigger an error using:
$validator = Validator::make(Input::all(), $rules, $messages);
if ($validator->fails())
{
... some redirection code here
is called. I have tried to use the validation exists like below, but it never fires.
$rules = array(
'brand_name' => 'required|min:3',
'blurb' => 'required',
'link' => 'required',
'trend' => 'exists:trends'
);
I have also tried a few variations on the exists
method, but nothing ever seems to fire. I know that the instance I am testing on definitely doesn't have a relationship set.
What am I doing wrong here?
EDIT: I see now from typing this out that I am validating the input and not the models values. How would I actually validate a model instance's properties instead?
I have the following code in a ExchangeRate
class:
/**
* Return the validator for this exchange rate.
*
* @return Illuminate\Validation\Validator A validator instance.
*/
public function getValidator()
{
$params = array(
'from_currency_id' => $this->from_currency_id,
'to_currency_id' => $this->to_currency_id,
'valid_from' => $this->valid_from,
'rate' => $this->rate,
'organization_id' => $this->organization_id,
);
$rules = array(
'from_currency_id' => ['required', 'exists:currencies,id'],
'to_currency_id' => ['required', 'exists:currencies,id', 'different:from_currency_id'],
'valid_from' => ['required', 'date'],
'rate' => ['required', 'numeric', 'min:0.0'],
'organization_id' => ['required', 'exists:organizations,id'],
);
return Validator::make($params, $rules);
}
Of course, this ExchangeRate
class also have the associations defined:
public function from_currency()
{
return $this->belongsTo('Currency', 'from_currency_id');
}
public function to_currency()
{
return $this->belongsTo('Currency', 'to_currency_id');
}
And all this glued together works like a clock:
$validator = $exchangeRate->getValidator();
if ($validator->fails())
throw new ValidationException($validator);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With