55 lines
1.5 KiB
PHP
55 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Database\Schema;
|
|
|
|
use Illuminate\Support\Str;
|
|
|
|
class ForeignIdColumnDefinition extends ColumnDefinition
|
|
{
|
|
/**
|
|
* The schema builder blueprint instance.
|
|
*
|
|
* @var \Illuminate\Database\Schema\Blueprint
|
|
*/
|
|
protected $blueprint;
|
|
|
|
/**
|
|
* Create a new foreign ID column definition.
|
|
*
|
|
* @param \Illuminate\Database\Schema\Blueprint $blueprint
|
|
* @param array $attributes
|
|
* @return void
|
|
*/
|
|
public function __construct(Blueprint $blueprint, $attributes = [])
|
|
{
|
|
parent::__construct($attributes);
|
|
|
|
$this->blueprint = $blueprint;
|
|
}
|
|
|
|
/**
|
|
* Create a foreign key constraint on this column referencing the "id" column of the conventionally related table.
|
|
*
|
|
* @param string|null $table
|
|
* @param string|null $column
|
|
* @param string|null $indexName
|
|
* @return \Illuminate\Database\Schema\ForeignKeyDefinition
|
|
*/
|
|
public function constrained($table = null, $column = 'id', $indexName = null)
|
|
{
|
|
return $this->references($column, $indexName)->on($table ?? Str::of($this->name)->beforeLast('_'.$column)->plural());
|
|
}
|
|
|
|
/**
|
|
* Specify which column this foreign ID references on another table.
|
|
*
|
|
* @param string $column
|
|
* @param string $indexName
|
|
* @return \Illuminate\Database\Schema\ForeignKeyDefinition
|
|
*/
|
|
public function references($column, $indexName = null)
|
|
{
|
|
return $this->blueprint->foreign($this->name, $indexName)->references($column);
|
|
}
|
|
}
|