Terdapat dua jadual dalam pangkalan data, yang merupakan perhubungan satu dengan banyak:
Meja utama (maklumat tempahan): dbo.Tempahan
[ReservationID] [INT] IDENTITY(1,1) NOT NULL,
[ReservationNo] [NVARCHAR](24) NOT NULL,
......
Butiran (butiran tempahan): dbo.ReservationDetail
[ReservationDetailID] [INT] IDENTITY(1,1) NOT NULL,
[ReservationID] [INT] NOT NULL, --外键
......
Kod Model adalah seperti berikut:
Tempahan.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');
}
}
Butiran Tempahan.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');
}
}
Panggil pengawal 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;
}
}
Mesej ralat yang dikembalikan oleh Laravel adalah seperti berikut:
"message": "Method belongsToReservation does not exist.",
"status_code": 500,
Maaf, apakah sebab ini?
Apa yang saya harap dapat dicapai ialah menggunakan perkaitan bersyarat tertentu bagi jadual utama untuk menanyakan jadual terperinci dan mengembalikan data jadual terperinci Pernyataan SQL pertanyaan adalah seperti berikut:
SELECT ReservationDetail.*
FROM ReservationDetail
INNER JOIN Reservation ON Reservation.ReservationID = ReservationDetail.ReservationID
WHERE Reservation.ReservationNo = 'xxx'
Maaf, pakar, di mana masalahnya? Bagaimanakah tatabahasa yang betul harus ditulis?
Soalan lain ialah jika anda mahu data dikembalikan untuk dipulangkan dengan menggabungkan jadual utama dan jadual perincian menjadi satu objek, contohnya:
{
"ReservationID": "1",
"ReservationNo": "201601011000",
"ReservationDetails": [
{
"ReservationDetailID": "1",
},
{
"ReservationDetailID": "2",
}
]
}
Bagaimana untuk menulis pertanyaan berkaitan? Tolong beri saya nasihat, terima kasih banyak! ! !
Bukan itu cara ia digunakan
Jika anda ingin membawanya keluar terus semasa membuat pertanyaan, sama seperti menyertai, maka
Jika anda ingin menggunakannya apabila mendapat hasil, ia adalah setara dengan menggunakan setiap item
SELECT Reservation where Reservation.ReservationID = xxx
Manual Rujukan