laravel如何在数据库中找到模型与其表之间的连接

hre*_*tic 8 php laravel laravel-5 laravel-5.2

在我的模型中我有

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Page extends Model
{
    //
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我可以说Page:all()并从pages表中获取所有行,但我没有看到数据库中的Page模型和pages表之间的任何连接

它只是根据型号名称猜测表格名称(最后是额外的s的小写)或者在其他地方提到它?

Adr*_*mbu 9

正如你在文档中看到的,这是Laravel的魔力:-)

https://laravel.com/docs/5.2/eloquent#defining-models(参见表名)

如果需要,可以由用户手动设置另一个名称

protected $table = 'my_table_name';

更进一步,这就是Laravel在你可以找到的基础模型中获取表名的方式 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php

/**
 * Get the table associated with the model.
 *
 * @return string
 */
public function getTable()
{
    if (isset($this->table)) {
        return $this->table;
    }

    return str_replace('\\', '', Str::snake(Str::plural(class_basename($this))));
}
Run Code Online (Sandbox Code Playgroud)