<?php

namespace SilverStripe\ORM;

use SilverStripe\ORM\FieldType\DBField;

/**
 * Abstract representation of a DB relation field, either saved or in memory
 */
interface Relation extends SS_List, Filterable, Sortable, Limitable {

	/**
	 * Sets the ComponentSet to be the given ID list.
	 * Records will be added and deleted as appropriate.
	 *
	 * @param array $idList List of IDs.
	 */
	public function setByIDList($idList);

	/**
	 * Returns an array with both the keys and values set to the IDs of the records in this list.
	 *
	 * Does not return the IDs for unsaved DataObjects
	 *
	 * @return array
	 */
	public function getIDList();

	/**
	 * Return the DBField object that represents the given field on the related class.
	 *
	 * @param string $fieldName Name of the field
	 * @return DBField The field as a DBField object
	 */
	public function dbObject($fieldName);
}