This forum has moved to a new location and is in read-only mode. Please visit talk.octobercms.com to access the new location.

deroccha
deroccha

Having the following table structure

clients

| id | name              |
|----|---------------|
| 1  | some client |

materials

| id | name          |
|----|---------------|
| 1  | material_name|

material_client_prices

| client_id | material_id | price |
|-----------|-------------|-------|
| 1         | 2           |     56.78  |

than try to build a many to many relationship with belongsToMany in a relation form

Client Model

class Client extends Model
{

    use \October\Rain\Database\Traits\Validation;
    /**
     * @var string The database table used by the model.
     */
    public $table = 'unysoft_ilta_clients';

    /**
     * @var array Guarded fields
     */
    protected $guarded = ['*'];

    /**
     * @var array The rules to be applied to the data.
     */
    public $rules = [
        'name'  => 'required|min:3|max:255',
        'company_reg_nr'  => 'required|min:3|max:255',
        'county'  => 'required',
        //'city'  => 'required',
        'zip'  => 'required|min:5|max:255',
        'address'  => 'required|min:5|max:255',
    ];

    /**
     * @var array Guarded fields
     */
    protected $fillable = ['name', 'company_reg_nr', 'county', 'city', 'zip', 'address'];

    /**
     * @var array Relations
     */

    public $belongsTo = [
        'user'   => ['RainLab\User\Models\User'],
        'county' =>['Unysoft\Ilta\Models\County'],
        'city'   =>['Unysoft\Ilta\Models\City'],
    ];

    public $belongsToMany = [
        'materials' =>[
            'Unysoft\Ilta\Models\Material',
            'table' => 'unysoft_ilta_material_prices',
            'key'=>'client_id'
        ],

        'delivered_items' => [
            'Unysoft\Ilta\Models\Delivery',
            'table'=>'unysoft_ilta_delivered_items',
            'key' =>'transaction_id',
            'otherKey' => 'material_id',
            'pivot'    => ['price', 'countity'],
        ],
    ];

    public $hasMany = [
        'price_plans' =>['Unysoft\Ilta\Models\MaterialPrice'],
        'deliveried_materials' =>['Unysoft\Ilta\Models\DeliveredItem','key'=>'client_id'],
    ];

    public $morphTo = [
        'client_id' =>[]
    ];

    public function getCountyOptions()
    {
        return County::getNameList();
    }

    public function getCityOptions()
    {
        return City::getNameList($this->county_id);
    }

    public function scopeIsSupplier($query){
        $query  = $query->where('type', 'supplier')->has('price_plans');

        return $query;    

    }
}

Material Model

/**
 * Material Model
 */
class Material extends Model
{

    use \October\Rain\Database\Traits\Validation;

    /**
     * @var string The database table used by the model.
     */
    public $table = 'unysoft_ilta_materials';

    public $rules = [
        'name'  => 'required|min:3|max:255|unique:unysoft_ilta_materials',
    ];
    /**
     * @var array Guarded fields
     */
    protected $guarded = ['*'];

    /**
     * @var array Fillable fields
     */
    protected $fillable = [
        'name','materials'
    ];

    /**
     * @var array Relations
     */

    public $belongsToMany =[
        'clients' =>[
            'Unysoft\Ilta\Models\Client',
            'table' => 'unysoft_ilta_material_prices',
            'key'=>'material_id'
        ],

    ];

    public $hasOne = [
        'material' => ['Unysoft\Ilta\Models\Material'],

    ];

    public function scopeIsAvailable($query)
    {
        $query = $query->with('price_plans');
        dump($query->toSql());
    }

}

I can't get pivot price to show up in my fields

Last updated

deroccha
deroccha

got it adding pivot fields to model relation!

1-2 of 2

You cannot edit posts or make replies: the forum has moved to talk.octobercms.com.