53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 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  $column
 | 
						|
     * @return \Illuminate\Support\Fluent|\Illuminate\Database\Schema\ForeignKeyDefinition
 | 
						|
     */
 | 
						|
    public function constrained($table = null, $column = 'id')
 | 
						|
    {
 | 
						|
        return $this->references($column)->on($table ?? Str::plural(Str::beforeLast($this->name, '_'.$column)));
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Specify which column this foreign ID references on another table.
 | 
						|
     *
 | 
						|
     * @param  string  $column
 | 
						|
     * @return \Illuminate\Support\Fluent|\Illuminate\Database\Schema\ForeignKeyDefinition
 | 
						|
     */
 | 
						|
    public function references($column)
 | 
						|
    {
 | 
						|
        return $this->blueprint->foreign($this->name)->references($column);
 | 
						|
    }
 | 
						|
}
 |