Note the upgraded forum! If you are experiencing issues logging in, you may need to reset your password which should send an email. If the email doesn't arrive, be sure to check your spam folder just in case.

Having issues with get_related_keys after upgrade from Fuel 1.2 to 1.4

Hi,

I had the following function which was working correctly in 1.2:

public function get_case_study_from_slug($slug)
    {
        $query = $this->db->get_where(self::$DB_TABLE, ['slug' => $slug], 1, 0)->result();

        if (!sizeof($query)) return null;

        $query = $query[0];

        $pty_keys = $this->get_related_keys(['id'=>$query->id], ['products']);

        if ($pty_keys) $products = $this->db->where_in('id',$pty_keys)->get('products')->result();
        else $products = [];

        $query->products_they_use = $products;

        return $query;
    }

Now I'm receiving the error: "Message: Too few arguments to function MY_Model::get_related_keys(), 2 passed in .../Case_studies_model.php on line 590 and at least 3 expected"

After comparing the function in 1.2 and 1.4, I can see an additional parameter is expected ($related_field), but it's unclear based on the documentation what that should be https://docs.getfuelcms.com/libraries/my_model#func_get_related_keys -- it looks like the documentation is maybe written wrong, and there is no "example" in the example box.

I kind of inherited this old code from a previous developer...so any direction or advice here would be helpful.

Comments

  • The doc block for that method does need to be updated. You are correct that get_related_keys() needs a third parameter which is the related model (e.g. 'Case_studies_model`)

  • Actually...v1.2 had $related_model and that's what the former developer was using ['products'] for there I believe...and that was working. The thing that seems to be missing in his call is $related_field -- which is the newly added first parameter (not sure if it was in 1.3 or 1.4) in get_related_keys() -- maybe I'm overlooking something really simple here...but I'm honestly not sure what that value should be based on his code.

  • The $related_field should be the key of the relationship that's assigned in the model's $has_many property. So hypothetically, there may be a has_many relationship defined in the model (near the top) with the key of case_studies:

    public $has_many = array('case_studies' => 'Case_studies_model');
    
  • Yeah, found this at the top:

    public $has_many = [
            'filter_subjects' =>
                [
                    'model' => 'subjects_model'
                ],
            'products_they_use' =>
                [
                    'model' => 'products_model'
                ]
            ];
    

    I assume it's probably the "products_they use" key...will give that a shot and let you know. Cheers.

  • Yep...that seems to have done the trick. You're a lifesaver. Inheriting old code with very few comments is a fun ride, haha ;-)

  • No problem... I know how that is (and have been on the guilty party side as well).

Sign In or Register to comment.