Rumah > Soal Jawab > teks badan
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! ! !
过去多啦不再A梦2017-05-16 16:54:40
Bukan itu cara ia digunakan
Jika anda ingin membawanya keluar terus semasa membuat pertanyaan, sama seperti menyertai, maka
public function showByReservationNo($reservation_no)
{
$reservation_details = ReservationDetail::where('ReservationNo', '=', $reservation_no)
->with('belongsToReservation')
->get();
return $reservation_details;
}
Jika anda ingin menggunakannya apabila mendapat hasil, ia adalah setara dengan menggunakan setiap itemSELECT 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;
}
Manual Rujukan