Es gibt zwei Tabellen in der Datenbank, bei denen es sich um Eins-zu-Viele-Beziehungen handelt:
Haupttabelle (Reservierungsinformationen): dbo.Reservation
[ReservationID] [INT] IDENTITY(1,1) NOT NULL,
[ReservationNo] [NVARCHAR](24) NOT NULL,
......
Details (Reservierungsdetails): dbo.ReservationDetail
[ReservationDetailID] [INT] IDENTITY(1,1) NOT NULL,
[ReservationID] [INT] NOT NULL, --外键
......
Der Code von Model lautet wie folgt:
Reservierung.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');
}
}
Rufen Sie einen API-Controller ein
<?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;
}
}
Die von Laravel zurückgegebene Fehlermeldung lautet wie folgt:
"message": "Method belongsToReservation does not exist.",
"status_code": 500,
Entschuldigung, was ist der Grund dafür? Ist es ein Namespace-Problem?
Was ich erreichen möchte, ist, eine bestimmte bedingte Zuordnung der Haupttabelle zu verwenden, um die detaillierte Tabelle abzufragen und die Daten der detaillierten Tabelle zurückzugeben. Die Abfrage-SQL-Anweisung lautet wie folgt:
SELECT ReservationDetail.*
FROM ReservationDetail
INNER JOIN Reservation ON Reservation.ReservationID = ReservationDetail.ReservationID
WHERE Reservation.ReservationNo = 'xxx'
Entschuldigung, Experten, wo liegt das Problem? Wie sollte die richtige Grammatik geschrieben werden?
Eine weitere Frage ist, ob die zurückgegebenen Daten durch Zusammenführen der Haupttabelle und der Detailtabelle in einem Objekt zurückgegeben werden sollen, zum Beispiel:
{
"ReservationID": "1",
"ReservationNo": "201601011000",
"ReservationDetails": [
{
"ReservationDetailID": "1",
},
{
"ReservationDetailID": "2",
}
]
}
Wie schreibe ich eine entsprechende Abfrage? Bitte geben Sie mir einen Rat, vielen Dank! ! !
不是这么用的
如果你要在查询的时候直接带出去,类似join,那就
如果你要在取结果的时候用,就是相当于用的时候每条都
SELECT Reservation where Reservation.ReservationID = xxx
参考手册