S'il vous plaît, parlez-moi de la relation un-à-plusieurs dans le modèle éloquent de Laravel. Pourquoi cela indique-t-il que la méthode d'appartenance n'existe pas ?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-16 16:52:40
0
1
1300

Il y a deux tables dans la base de données, qui sont des relations un-à-plusieurs :

Table principale (informations de réservation) : dbo.Reservation

    [ReservationID] [INT] IDENTITY(1,1) NOT NULL,
    [ReservationNo] [NVARCHAR](24) NOT NULL,
    ......

Détails (détails de la réservation) : dbo.ReservationDetail

    [ReservationDetailID] [INT] IDENTITY(1,1) NOT NULL,
    [ReservationID] [INT] NOT NULL,                          --外键
    ......
Le code de

Model est le suivant :

Réservation.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Reservation extends Model
{
    protected  $table = 'dbo.Reservation';

    public function hasManyReservationDetails()
    {
        return $this->hasMany('App\Models\ReservationDetail', 'ReservationID', 'ReservationID');
    }
}

ReservationDetail.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ReservationDetail extends Model
{
    protected  $table = 'dbo.ReservationDetail';

    public function belongsToReservation()
    {
        return $this->belongsTo('App\Models\Reservation', 'ReservationID', 'ReservationDetailID');
    }

}

Appelez un contrôleur API

<?php

namespace App\Api\Controllers;

use App\Models\Reservation;
use App\Models\ReservationDetail;
use App\Http\Requests;

class ReservationController extends BaseController
{

    public function showByReservationNo($reservation_no)
    {

        $reservation_details = ReservationDetail::all()
            ->belongsToReservation()
            ->where('ReservationNo', '=', $reservation_no)
            ->get();

        return $reservation_details;
    }
}

Le message d'erreur renvoyé par Laravel est le suivant :

  "message": "Method belongsToReservation does not exist.",
  "status_code": 500,

Excusez-moi, quelle en est la raison ? Est-ce un problème d'espace de noms ?

Ce que j'espère réaliser, c'est utiliser une certaine association conditionnelle de la table principale pour interroger la table détaillée et renvoyer les données de la table détaillée. L'instruction SQL de requête est la suivante :

SELECT ReservationDetail.*
FROM ReservationDetail
INNER JOIN Reservation ON Reservation.ReservationID = ReservationDetail.ReservationID
WHERE Reservation.ReservationNo = 'xxx'

Excusez-moi, experts, où est le problème ? Comment dois-je écrire la grammaire correcte ?

Une autre question est de savoir si vous souhaitez que les données renvoyées soient renvoyées en fusionnant la table principale et la table détaillée en un seul objet, par exemple :

{
  "ReservationID": "1", 
  "ReservationNo": "201601011000", 
  "ReservationDetails": [
    {
      "ReservationDetailID": "1", 
    }, 
    {
      "ReservationDetailID": "2", 
    }
  ]
}

Comment rédiger une requête associée ? S'il vous plaît, donnez-moi quelques conseils, je suis très reconnaissant ! ! !

曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(1)
过去多啦不再A梦

Ce n'est pas ainsi qu'il est utilisé
Si vous souhaitez l'afficher directement lors d'une requête, comme pour rejoindre, alors

    public function showByReservationNo($reservation_no)
    {

        $reservation_details = ReservationDetail::where('ReservationNo', '=', $reservation_no)
            ->with('belongsToReservation')
            ->get();

        return $reservation_details;
    }

Si vous souhaitez l'utiliser pour obtenir les résultats, cela équivaut à utiliser chaque élémentSELECT Reservation where Reservation.ReservationID = xxx

    public function showByReservationNo($reservation_no)
    {

        $reservation_details = ReservationDetail::where('ReservationNo', '=', $reservation_no)
            ->get();

        foreach($reservation_details as $reservation_detail){
            $reservation = $reservation_detail->belongsToReservation;
            //todo: something you need
        }
        return $reservation_details;
    }

Manuel de référence

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal