So i have two columns - SizeX & SizeY. For front end users I use Laravel mutator
public function getSizeAttribute(){
    /**
     * Set Size
     */
    $size = $this->SizeX. " x ". $this->SizeY;
    /**
     * Return
     */
    return $size;
}
To format the sizes like this SizeX x SizeY. The column Sizes does not exists because its dynamic. Is it possible to use mutators or alternative within the Elaquent model to detect that this is a dynamic attribute, and use some sort of method to convert the SizeX x SizeY to individual columns? Once the user submits the attribute Size back to laravel application for filtering?
Edit:
Right, this is the method I'm using to retrieve filtered Items
public function scopeFilteredMaterials($query,$params = array()){ 
    /**
     * Get filters
     */
    $filters = array();
    /**
     * Extract Info
     */
    if(!empty($params) && is_array($params)){
        /**
         * Get Available Filters
         */
        $filters = $this->getAvailableFilters();
        foreach ($filters as $key => $filter){
            if(isset($params[$filter])){
                $filters[$filter] = $params[$filter];
                unset($filters[$key]);
            }else{
                unset($filters[$key]);
            }
        }
    }
    foreach ($filters as $key => $filter){
        $query->whereIn(key ,$filter);
    }
    $result = $query->get();
}
This is the filters variable which holds available filters for user to see
protected $filters = array( "Name", "url", "Size", );
I'm using the above to show the specific values to the user. Once the user selects those values I'm using the same array to check against those filters and fire the query. My problem is the Size attribute is made up of two columns which I have not problem using the following Mutator and $appends variable to automatically bring the value to the user.
/**
 * Get Size Attribute
 */
public function getSizeAttribute(){
    /**
     * Set Size
     */
    $size = $this->SizeX. " x ". $this->SizeY;
    /**
     * Return
     */
    return $size;
}
But i ca't figure out a way to convert the Size variable back to SizeX & SizeY
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire