从带有Laravel和Eloquent的表格中选择所有内容

2022-08-30 09:38:41

我正在使用Laravel 4来设置我的第一个模型,以从名为.posts

在标准MySQL中,我会使用:

SELECT * FROM posts;

如何在我的Laravel 4模型中实现这一点?

有关我的完整模型源代码,请参阅下文:

<?php

class Blog extends Eloquent 
{

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'posts';

    public function getAllPosts()
    {

    }

}

答案 1

您只需致电

Blog::all();

//example usage.
$posts = Blog::all();

$posts->each(function($post) // foreach($posts as $post) { }
{
    //do something
}

从应用程序中的任意位置。

阅读文档将有很大帮助。


答案 2

有3种方法可以做到这一点。

1 - 使用 all() 或 get();

$entireTable = TableModelName::all();

断续器

$posts = Post::get(); // both get and all  will work here

$posts = Post::all();

2 - 使用 DB 外观

将此行放在控制器中的类之前

use Illuminate\Support\Facades\DB; // this will import the DB facade into your controller class

现在在课堂上

$posts = DB::table('posts')->get(); // it will get the entire table

或者更动态的方式是 -

$postTable = (new Post())->getTable(); // This will get the table name
$posts = DB::table($postTable)->get();

这种方式的优点是,如果您更改了表名,它不会返回任何错误,因为它从模型动态获取表名。确保在顶部导入模型,如fadade。PostPostDB

3 - 将 DB 立面与选择一起使用

将此行放在控制器中的类之前

*Same import the DB facade like method 2*

现在在控制器中

$posts = DB::select('SELECT * FROM posts');

推荐