小编did*_*x16的帖子

Laravel 中如何通过 Model 知道表列是否为外键?

正如标题所说,我如何知道 Model 的字段是否是 Laravel 中的外键?

假设我有一个名为 show_type_id 的 FK 列和一个名为 Event 的模型,我想知道是否有一个函数给定模型类或模型表,并且指定字段如果是则返回 true,如果不是则返回 false。

...
$model = Event:class; // or Event::getTable();
$isFK = isFK('show_type_id', $model);
...
Run Code Online (Sandbox Code Playgroud)

编辑

感谢@piscator,这就是有效的:

use Illuminate\Support\Facades\Schema;

function isFK(string $table, string $column): bool
{
    $fkColumns = Schema::getConnection()
        ->getDoctrineSchemaManager()
        ->listTableForeignKeys($table);

    $fkColumns = collect($fkColumns);

    return $fkColumns->map->getColumns()->flatten()->search($column) !== FALSE;

}
Run Code Online (Sandbox Code Playgroud)

mysql model foreign-keys laravel eloquent

6
推荐指数
1
解决办法
3025
查看次数

标签 统计

eloquent ×1

foreign-keys ×1

laravel ×1

model ×1

mysql ×1