Bagaimana untuk mendapatkan data dari jadual lain yang dirujuk oleh kunci asing?
P粉738821035
P粉738821035 2024-01-16 11:06:02
0
1
471

Ini adalah jadual yang saya ingin dapatkan data, saya menggunakan ekspres untuk membuat permintaan dapatkan daripada apl seterusnya:

model Provider {
  id          String    @id @default(cuid())
  name        String
  email       String
  password    String
  phone       String      
  photo       String?
  service     Service?  @relation(fields: [serviceId], references: [id])
  serviceId   String?
  location    Location? @relation(fields: [locationId], references: [id])
  locationId  String?
  createdAt   DateTime  @default(now())
  text        String
  starAverage Float
  medals      Medals[]
  comment     Comment[]
}

model Service {
  id       String     @id @default(cuid())
  type     String
  provider Provider[]
}

Saya ingin mendapatkan jadual perkhidmatan pembekal jenis perkhidmatan dan bukannya serviceId, ini adalah laluan saya.

router.get('/list', async (req: Request, res: Response) => {
  const allClients = await prisma.client.findMany()
  res.json({allClients})
})

Ini adalah cara saya mendapatkan data API yang selebihnya menggunakan axios

const [providers, setProviders] = useState([] as any[])

  useEffect(() => {
    axios.get('http://localhost:5140/providers/list')//my list of all providers
    .then(res => {
      console.log(res)
      setProviders(res.data)
    }).catch(err => {
      console.log(err)
    })
  }, )
  const renderedProviders = Object.values(providers).map(provider => {
    return (
      <div
        className="card"
        style={{ width: "18rem"}}
        key={provider.id}
      >
        <img className="card-img-top" src="..."/>
        <div className="card-body">
          <h3>{provider.name}</h3>
          <p>{provider.starAverage} estrekas</p>
          <p>{provider.serviceId}</p>
        </div>
      </div>
    );
  });
  return (
    <div className="d-flex flex-row flex-wrap justify-content-between">
      {renderedProviders}
    </div>
  )

Pada masa ini hanya serviceId penyedia boleh diperolehi, bukan jenis perkhidmatan

P粉738821035
P粉738821035

membalas semua(1)
P粉457445858

Untuk mendapatkan data daripada jadual lain yang dirujuk oleh kunci asing dalam pangkalan data, anda boleh menggunakan klausa JOIN dalam pertanyaan SQL anda. Klausa JOIN membolehkan anda menggabungkan baris daripada dua atau lebih jadual berdasarkan lajur yang berkaitan antara jadual.

Ini ialah cara menggunakan klausa JOIN 子句从两个表(usersorders untuk mendapatkan data daripada dua jadual (pengguna dan pesanan), yang berkaitan dengan kunci asing.

SELECT users.*, orders.*
FROM users
JOIN orders ON orders.user_id = users.id
Klausa

JOIN 子句根据 user_id 列组合 usersorders 表中的行。 code>orders 表和 users 表中的 id 列。 SELECT 子句指定要从 usersorders menggabungkan baris daripada jadual pengguna dan order berdasarkan lajur user_id. Lajur id dalam jadual kod>pesanan dan jadual pengguna. Klausa SELECT menentukan lajur untuk diambil daripada jadual pengguna dan order.

Diedit Bagaimanakah saya boleh merujuknya dalam laluan Ekspres dan permintaan http daripada axios?

Anda boleh menggunakan kaedah sequelize.query (Sequelize ialah kaedah Node.js ORM berasaskan janji) untuk melaksanakan pertanyaan SQL mentah.

app.get('/users/:id', (req, res) => {
  const { id } = req.params;
  const query = `
    SELECT users.*, orders.*
    FROM users
    JOIN orders ON orders.user_id = users.id
    WHERE users.id = :id
  `;
  const replacements = { id };
  sequelize.query(query).then(([results, metadata]) => {
    res.send(results);
  });
});

kaedah sequelize.query digunakan untuk melaksanakan pertanyaan SQL mentah dengan klausa JOIN untuk mendapatkan data daripada pengguna dan jadual pesanan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!