Jadual Kandungan
Pertanyaan berbilang jadual
Sambungan satu dengan satu
Satu-ke-banyak sertai
Sambungan banyak-ke-banyak
Fungsi paging
Paging pertanyaan berbilang jadual
Rumah rangka kerja php Laravel Penjelasan terperinci tentang cara melaksanakan pertanyaan berbilang jadual dan fungsi halaman dalam Laravel

Penjelasan terperinci tentang cara melaksanakan pertanyaan berbilang jadual dan fungsi halaman dalam Laravel

Apr 03, 2023 pm 06:52 PM

Apabila pembangunan web menjadi semakin kompleks, pertanyaan data jadual tunggal tidak dapat memenuhi keperluan sebenar. Oleh itu, dalam proses pembangunan sebenar, pertanyaan berbilang jadual secara beransur-ansur menjadi bahagian yang sangat diperlukan. Dalam Laravel, pertanyaan berbilang jadual boleh dipermudahkan dengan kesederhanaan yang tidak terdapat dalam ORM lain.

Dalam Laravel, pertanyaan berbilang jadual boleh menggunakan beberapa kaedah model yang berkaitan. Kaedah ini mudah dan mudah digunakan, dan dengan cepat boleh membolehkan kami melakukan pertanyaan berbilang jadual. Artikel ini akan memperkenalkan pertanyaan berbilang jadual dan fungsi halaman dalam Laravel.

Pertanyaan berbilang jadual

Pertanyaan berbilang jadual dalam Laravel boleh dilaksanakan dengan menggunakan beberapa kaedah model hubungan yang disediakan oleh Eloquent ORM. Kaedah ini membolehkan kami menyertai berbilang jadual dalam pangkalan data dan melakukan pertanyaan bersama.

Sambungan satu dengan satu

Sambungan satu dengan satu ialah jenis pangkalan data hubungan yang paling mudah. Dalam Laravel, anda boleh menyertai dua jadual dengan menggunakan kaedah hasOne dan belongsTo.

Andaikan kita mempunyai jadual pengguna dan jadual alamat, dan setiap pengguna mempunyai alamat. Dalam kes ini, kami boleh menggunakan kod berikut untuk mengakses alamat pengguna:

// 定义 User 模型
class User extends Model
{
    public function address()
    {
        return $this->hasOne(Address::class);
    }
}

// 定义 Address 模型
class Address extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

// 查询
$user = User::find(1);
$address = $user->address; // 返回用户的地址信息
Salin selepas log masuk

Kami juga boleh membalikkan pertanyaan:

$address = Address::find(1);
$user = $address->user; // 返回地址所属的用户信息
Salin selepas log masuk

Satu-ke-banyak sertai

Satu lagi jenis sambungan biasa ialah sambungan satu-ke-banyak. Dalam kes ini, model boleh mempunyai berbilang model berkaitan. Sebagai contoh, dalam aplikasi blog, pengguna boleh mempunyai berbilang siaran. Kita boleh menggunakan kaedah hasMany dan belongsTo untuk mencapai jenis sambungan ini.

// 定义 User 模型
class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

// 定义 Post 模型
class Post extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

// 查询
$user = User::find(1);
$posts = $user->posts; // 返回用户的所有文章
Salin selepas log masuk

Kami juga boleh menambah syarat pertanyaan lain dalam model Post:

$user = User::find(1);
$posts = $user->posts()->where('published', 1)->get(); // 返回已发布的文章
Salin selepas log masuk

Sambungan banyak-ke-banyak

Sambungan banyak-ke-banyak menghubungkan dua model , setiap model boleh mempunyai berbilang model yang berkaitan dengannya. Sebagai contoh, catatan blog boleh mempunyai berbilang teg dan teg boleh digunakan dalam berbilang catatan. Dalam Laravel, anda boleh menyertai dua jadual dengan menggunakan kaedah belongsToMany.

// 定义 Post 模型
class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
}

// 定义 Tag 模型
class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class);
    }
}

// 查询
$post = Post::find(1);
$tags = $post->tags; // 返回文章的所有标签
Salin selepas log masuk

Kami juga boleh menambah syarat pertanyaan lain dalam model Tag:

$tag = Tag::find(1);
$posts = $tag->posts()->where('published', 1)->get(); // 返回该标签下已发布的文章
Salin selepas log masuk

Fungsi paging

Laravel juga menyediakan fungsi paging yang membolehkan kami membuat pertanyaan hasil adalah penomboran. Kita boleh menggunakan kaedah penomboran untuk melaksanakan fungsi paging Kaedah penomboran akan mengembalikan contoh penomboran, yang mengandungi data halaman semasa, pautan halaman dan maklumat lain.

$posts = Post::paginate(10); // 查询所有文章,每页显示 10 条数据
Salin selepas log masuk

Kami juga boleh menggunakan pautan fungsi tambahan untuk mendapatkan pautan penomboran:

{!! $posts->links() !!}
Salin selepas log masuk

Ini akan memaparkan penombor pada halaman dan kami boleh mengklik pada nombor halaman untuk menukar ke halaman yang berbeza.

Paging pertanyaan berbilang jadual

Dalam proses pembangunan sebenar, kita selalunya perlu melakukan pertanyaan bersama pada berbilang jadual dan melakukan paging mengikut syarat tertentu. Dalam Laravel, kita boleh menggunakan langkah berikut untuk melaksanakan fungsi halaman pertanyaan berbilang jadual:

  1. Tentukan model berkaitan dan kaedahnya.
  2. Tulis kod pertanyaan dan gunakan kaedah join untuk menyambungkan berbilang jadual.
  3. Gunakan kaedah select untuk memilih data untuk pertanyaan.
  4. Gunakan kaedah orderBy untuk mengisih hasil pertanyaan.
  5. Gunakan kaedah paginate untuk menomborkan hasil pertanyaan.

Sebagai contoh, kami mempunyai sistem pengurusan artikel yang mengandungi tiga jadual: posts, categories dan tags. Berikut ialah definisi model yang berkaitan:

// 定义 Post 模型
class Post extends Model
{
    public function category()
    {
        return $this->belongsTo(Category::class);
    }

    public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
}

// 定义 Category 模型
class Category extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

// 定义 Tag 模型
class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class);
    }
}
Salin selepas log masuk

Kita perlu menanyakan semua artikel yang diterbitkan dan menyusunnya daripada yang terbaru kepada yang lama mengikut masa penerbitan. Hasil pertanyaan hendaklah termasuk maklumat seperti tajuk artikel, pengarang, masa penerbitan, klasifikasi dan teg. Kita boleh menggunakan kod berikut untuk mencapai ini:

$posts = Post::join('categories', 'posts.category_id', '=', 'categories.id')
    ->join('post_tag', 'posts.id', '=', 'post_tag.post_id')
    ->join('tags', 'tags.id', '=', 'post_tag.tag_id')
    ->where('posts.published', true)
    ->select(
        'posts.title', 
        'posts.author',
        'posts.published_at',
        'categories.name as category',
        DB::raw('GROUP_CONCAT(tags.name) as tags')
    )
    ->orderBy('published_at', 'desc')
    ->groupBy('posts.id')
    ->paginate(10);
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah join untuk menyertai tiga jadual posts, categories dan tags. Gunakan kaedah where untuk menentukan syarat pertanyaan (artikel yang diterbitkan). Gunakan kaedah select untuk memilih medan yang perlu ditanya dan gunakan fungsi GROUP_CONCAT untuk menggabungkan berbilang teg artikel yang sama menjadi satu rentetan.

Pada akhirnya, kami menggunakan kaedah paginate untuk penomboran dan kaedah links dalam fail paparan untuk memaparkan penomboran. Kod penomboran lengkap:

<div class="container">
    <div class="row">
        @foreach ($posts as $post)
        <div class="col-md-8">
            <h3>{{ $post->title }}</h3>
            <p class="text-muted">{{ $post->published_at->diffForHumans() }} | {{$post->category}} | Tags: {{ $post->tags }}</p>
            <p>{{ Str::limit($post->content, 200) }}</p>
            <hr>
        </div>
        @endforeach
    </div>
    {{ $posts->links() }}
</div>
Salin selepas log masuk

Ringkasan: Dalam Laravel, pertanyaan berbilang jadual boleh dilaksanakan menggunakan kaedah model yang berkaitan dan fungsi halaman boleh dilaksanakan menggunakan kaedah penomboran. Menggunakan fungsi ini, kami boleh melakukan pertanyaan dan pemprosesan data yang kompleks dengan lebih mudah.

Atas ialah kandungan terperinci Penjelasan terperinci tentang cara melaksanakan pertanyaan berbilang jadual dan fungsi halaman dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana membina API RESTful dengan ciri -ciri canggih di Laravel? Bagaimana membina API RESTful dengan ciri -ciri canggih di Laravel? Mar 11, 2025 pm 04:13 PM

Artikel ini membimbing membina API Restful Laravel yang mantap. Ia meliputi persediaan projek, pengurusan sumber, interaksi pangkalan data, siri, pengesahan, kebenaran, ujian, dan amalan terbaik keselamatan penting. Menangani Chall Scalability

Bagaimana untuk melaksanakan pengesahan dan kebenaran OAuth2 di Laravel? Bagaimana untuk melaksanakan pengesahan dan kebenaran OAuth2 di Laravel? Mar 12, 2025 pm 05:56 PM

Butiran artikel ini melaksanakan pengesahan dan kebenaran OAuth 2.0 di Laravel. Ia meliputi menggunakan pakej seperti penyelesaian liga/oauth2-server atau penyedia khusus, menekankan persediaan pangkalan data, pendaftaran klien, konfigurasi pelayan kebenaran

Bagaimana saya menggunakan komponen Laravel untuk mencipta elemen UI yang boleh diguna semula? Bagaimana saya menggunakan komponen Laravel untuk mencipta elemen UI yang boleh diguna semula? Mar 17, 2025 pm 02:47 PM

Artikel ini membincangkan membuat dan menyesuaikan elemen UI yang boleh diguna semula di Laravel menggunakan komponen, menawarkan amalan terbaik untuk organisasi dan mencadangkan peningkatan pakej.

Apakah amalan terbaik untuk menggunakan Laravel dalam persekitaran awan asli? Apakah amalan terbaik untuk menggunakan Laravel dalam persekitaran awan asli? Mar 14, 2025 pm 01:44 PM

Artikel ini membincangkan amalan terbaik untuk menggunakan Laravel dalam persekitaran awan-asli, yang memberi tumpuan kepada skalabiliti, kebolehpercayaan, dan keselamatan. Isu -isu utama termasuk kontena, mikroservis, reka bentuk tanpa kewarganegaraan, dan strategi pengoptimuman.

Bagaimanakah saya boleh membuat dan menggunakan peraturan pengesahan tersuai di Laravel? Bagaimanakah saya boleh membuat dan menggunakan peraturan pengesahan tersuai di Laravel? Mar 17, 2025 pm 02:38 PM

Artikel ini membincangkan membuat dan menggunakan peraturan pengesahan tersuai di Laravel, menawarkan langkah -langkah untuk menentukan dan melaksanakannya. Ia menyoroti faedah seperti kebolehgunaan semula dan kekhususan, dan menyediakan kaedah untuk memperluaskan sistem pengesahan Laravel.

Laravel vs Symfony: Mana yang sesuai untuk aplikasi web anda? Laravel vs Symfony: Mana yang sesuai untuk aplikasi web anda? Mar 10, 2025 pm 01:34 PM

Ketika datang untuk memilih kerangka PHP, Laravel dan Symfony adalah antara pilihan yang paling popular dan digunakan secara meluas. Setiap kerangka membawa falsafah, ciri, dan kekuatannya sendiri ke meja, menjadikannya sesuai untuk projek yang berbeza dan menggunakan kes -kes

Bagaimana saya membuat dan menggunakan arahan pisau tersuai di laravel? Bagaimana saya membuat dan menggunakan arahan pisau tersuai di laravel? Mar 17, 2025 pm 02:50 PM

Artikel ini membincangkan membuat dan menggunakan arahan pisau tersuai di Laravel untuk meningkatkan templat. Ia meliputi arahan yang menentukan, menggunakannya dalam templat, dan menguruskannya dalam projek besar, menonjolkan manfaat seperti kebolehgunaan semula kod yang lebih baik dan r yang lebih baik dan r

Apakah cara terbaik untuk mengendalikan muat naik fail dan penyimpanan awan di Laravel? Apakah cara terbaik untuk mengendalikan muat naik fail dan penyimpanan awan di Laravel? Mar 12, 2025 pm 05:54 PM

Artikel ini meneroka strategi muat naik fail optimum dan penyimpanan awan di Laravel. Ia mengkaji penyimpanan storan tempatan berbanding pembekal awan (AWS S3, Google Cloud, Azure, DigitalOcean), menekankan keselamatan (pengesahan, sanitisasi, HTTPS) dan Opti Prestasi

See all articles