mardi 4 février 2020

Larevel Relationship from array in database

I was wondering if you could help with a laravel relationship. I will try to explain as best i can.

I have a two tables:

Alerts

Schema::create('alerts', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('user_id');
            $table->float('price_low')->nullable();
            $table->float('price_high')->nullable();
            $table->json('conditions')->nullable();
            $table->softDeletes();
            $table->timestamps();
        });

Conditions

DB::table('conditions')->insert([
            ['condition_value' => 'New'],
            ['condition_value' => 'Second Hand'],
            ['condition_value' => 'Ex Demo'],
]);

The condition field 'conditions' stores an array like this:

[{"condition_id": 1}, {"condition_id": 2}]

I am trying to define a relationship so i can do something like this:

$alerts = Alerts::with(['condition'])->where('user_id', $request->user()->id)->get();

My Alert model looks like this:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Alerts extends Model
{
    protected $casts = [
        'conditions' => 'array'
    ];


    public function user(){
        return $this->hasOne('App\User', 'id', 'user_id');
    }

    public function condition(){
        return $this->hasMany('App\Condition', 'id', 'conditions[condition_id]');
    }
}

but nothing is returned and im struggling to find an answer in the Laravel docs.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire