I believe you are confusing the relationship methods, from the laravel docs
class User extends Eloquent {
public function phone()
{
return $this->has_one('Phone', 'my_foreign_key');
}
}
The identifier my_foreign_key is the name of the foreign key in the phones table and it references the user id(the owner of the relationship). so in your case
public function department(){
return $this->has_one('Department', 'your_user_id');
}
where your_user_id is the field you use in your deparments table to reference the user it belongs to. and as well in the other examples you provided
currently you are setting the foreign key to reference the same table and not its owner.