blob: a8a5cacf2f4cb8b92fb197360c4bc551b71007d3 [file] [log] [blame]
<?php
namespace LdapRecord\Models\Concerns;
use LdapRecord\Models\Relations\HasMany;
use LdapRecord\Models\Relations\HasManyIn;
use LdapRecord\Models\Relations\HasOne;
use LdapRecord\Support\Arr;
trait HasRelationships
{
/**
* Returns a new has one relationship.
*
* @param mixed $related
* @param string $relationKey
* @param string $foreignKey
*
* @return HasOne
*/
public function hasOne($related, $relationKey, $foreignKey = 'dn')
{
return new HasOne($this->newQuery(), $this, $related, $relationKey, $foreignKey);
}
/**
* Returns a new has many relationship.
*
* @param mixed $related
* @param string $relationKey
* @param string $foreignKey
*
* @return HasMany
*/
public function hasMany($related, $relationKey, $foreignKey = 'dn')
{
return new HasMany($this->newQuery(), $this, $related, $relationKey, $foreignKey, $this->guessRelationshipName());
}
/**
* Returns a new has many in relationship.
*
* @param mixed $related
* @param string $relationKey
* @param string $foreignKey
*
* @return HasManyIn
*/
public function hasManyIn($related, $relationKey, $foreignKey = 'dn')
{
return new HasManyIn($this->newQuery(), $this, $related, $relationKey, $foreignKey, $this->guessRelationshipName());
}
/**
* Get the relationships name.
*
* @return string|null
*/
protected function guessRelationshipName()
{
return Arr::last(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3))['function'];
}
}