mardi 13 novembre 2018

Laravel eloquent belongsto with multiple ids in same column as comma seprated

I have 4 tables media, media_type, media_mapping and country.

country with field id, name, created_at, updated_at.

media_type with field id, name, created_at, updated_at.

media table with field id, name, media_type_id, description, created_at, updated_at.

media_mapping with field id, media_id,country_id, hastags, created_at, updated_at.

Where in media_mapping table country_id contain comma separated ids like 1,2,3,4 from country table.

I want to fetch selected column data from all of this table using laravel eloquent.

I have tried below code where it gives error for comma separated column.

$mediaQuery = new Media();
$mediaQuery = $mediaQuery->newQuery();
$mediaQuery->orderBy('created_at', 'desc')
->with(array('MediaMapping'=>function($query){
    $query->select('media_id', 'country_id', 'hashtags')->with(array('Country'=>function($query){
        $query->select('id','name');
    }
));
},
'MediaType'=>function($query){
    $query->select('id','name');
})
);
$allDataList = $mediaQuery->get();

When column contain only one country id then this code run properly but when it has comma separated values in column then it will gives below error.

"SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "1,3,5,7" (SQL: select "id", "name" from "country" where "country"."id" in (1,3,5,7, 3))"



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire