This thread helped a lot

In the end I had this query

   class MetaData extends Model 

    public function meta_values()
        return $this->belongsToMany(\App\MetaValue::class);

    public function meta_data_types()
        return $this->belongsToMany(\App\MetaValue::class)
            ->leftJoin('meta_data_type_meta_value', '', '=', 'meta_data_type_meta_value.meta_value_id')
            ->leftJoin('meta_data_types', '', '=', 'meta_data_type_meta_value.meta_data_type_id')

Model meta_data_types had not direct relation to this MetaData model class. But MetaData did relate to meta_values.

So using that info I could get the related MetaValues and then the related MetaDataTypes and that was it.

It is a lot easier if just doing this through a One to Many