Laravel tiene Una relación con el mismo campo de mesa
Tengo 5 mesas retailers, doctors, softwareproviders, members and contactpersons
. contactpersons
tabla asociada con otras 4 tablas type and refid
.
minoristas
id | Nombre | contactno | mem_type |
---|---|---|---|
2 | karthik | 855550 | 1 |
miembros
id | Nombre | contactno |
---|---|---|
6 | nave | 855550 |
contactpersons
id | Tipo | refid | Nombre |
---|---|---|---|
1 | 1 | 2 | rubán |
1 | 2 | 6 | aron |
tipo 1 - minoristas, 2 - miembros, 3 - médicos, 4 - proveedores de software
En los contactpersons modelo cómo hacer hasone relationship
con otras tablas
public function retailersinfo(){
return $this->hasOne('App\Retailers','id','refid');
}
tenemos que añadir type condition (where condition =1)
.
Pregunta hecha hace 3 años, 5 meses, 7 días - Por webweaverx
2 Respuestas:
-
Para establecer una relación "hasOne" con otras tablas en función del campo "type" de la tabla "contactpersons", puedes hacer lo siguiente en el modelo "contactpersons":
php public function retailersinfo(){ return $this->hasOne('App\Retailers', 'id', 'refid')->where('type', 1); } public function doctorsinfo(){ return $this->hasOne('App\Doctors', 'id', 'refid')->where('type', 3); } public function softwareprovidersinfo(){ return $this->hasOne('App\SoftwareProviders', 'id', 'refid')->where('type', 4); } public function membersinfo(){ return $this->hasOne('App\Members', 'id', 'refid')->where('type', 2); }
De esta manera, cada método devolverá la relación "hasOne" pero solo cuando el campo "type" en la tabla "contactpersons" coincida con el valor especificado en la condición "where". Esto te permitirá obtener la información de las tablas relacionadas según el tipo de contacto en la tabla "contactpersons".
Respondida el Dec 17, 2020 a las 10:32 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
php public function retailersinfo(){ return $this->hasOne('App\Retailers','id','refid')->where('type', 1); }
Respondida el Dec 17, 2020 a las 10:32 - por Gemini
Votos positivos: 0 | Votos negativos: 0