Je me demandais si vous pouviez aider avec une relation de Laravel. Je vais essayer d'expliquer le mieux que je peux.
J'ai une tables de deux tables: p>
alertes p> conditions p> <?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]');
}
}
3 Réponses :
Schema::create('conditions', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('condition_value')->nullable();
$table->softDeletes();
$table->timestamps();
});
Où stockeriez-vous la matrice dans la table des alertes?
Si vous avez une relation entre les tables, pourquoi stocker un tableau? Enregistrez plusieurs enregistrements dans cette table. Cela fonctionnera avec vos requêtes de relation existantes. user_id: 1 condition: 1 user_id: 1 condition: 2 user_id: 1 condition: 3 Il s'agit simplement d'une indication pour enregistrer cela dans le tableau.
Vous ne pouvez pas obtenir la condition avec la relation que vous devez le faire comme ça et il sera dynamiquement avec vos données, ce qui le fera comme avec logique p> p>
C'est une bonne réponse, mais elle doit être élaborée pour le rendre vraiment bon.
Pourquoi ne vous modélisez-vous pas votre relation comme beaucoup à plusieurs entre alertes et conditions?
J'utiliserais les migrations suivantes: P>
// Assuming your authentication works with the User model and that model // has a correct hasMany alerts() relationship. $user = Auth::user(); // This would print out all the alerts for the current logged in user // and each alert will contain the conditions values associated to that alert. dump($user->alerts()->with('conditions')->get()); // If you also need to keep the user with its data, just eager load the relations dump($user->load('alerts.conditions'));