Я не уверен, что правильно задаю вопросы, но это то, что я пытаюсь сделать.
Таким образом, мы можем получить ток от
$model = Model::find($id)
Тогда мы можем получить его отношения как:
$model->relationships()->id
Тогда у нас есть действия, такие как:
$model->relationships()->detach(4);
У меня вопрос, можем ли мы иметь собственный метод, такой как:
$model->relationships()->customMethod($params);
?
и в модели это может выглядеть так:
public function customMethod($params){
//Do something with relationship id
}
Но дальше, как в customMethod
я бы получил $models
информация, как идентификатор?
Извините, если это немного сбивает с толку.
Прежде всего, если вы хотите получить доступ к связанному объекту, вы делаете это, обращаясь к атрибуту с тем же именем, что и отношение. В вашем случае, чтобы получить доступ к объекту (ам) из отношения, вам нужно сделать это:
$model->relationships //returns related object or collection of objects
вместо
$model->relationships() //returns relation definition
во-вторых, если вы хотите получить доступ к атрибутам связанного объекта, вы можете сделать это так же:
$relatedObjectName = $model->relationship->name; // this works if you have a single object on the other end of relations
наконец, если вы хотите вызвать метод в связанной модели, вам нужно реализовать этот метод в классе связанной модели.
class A extends Eloquent {
public function b() {
return $this->belongsTo('Some\Namespace\B');
}
public function cs() {
return $this->hasMany('Some\Namespace\C');
}
}
class B extends Eloquent {
public function printId() {
echo $this->id;
}
}
class C extends Eloquent {
public function printId() {
echo $this->id;
}
}
$a = A::find(5);
$a->b->printId(); //call method on related object
foreach ($a->cs as $c) { //iterate the collection
$c->printId(); //call method on related object
}
Вы можете прочитать больше о том, как определить и использовать отношения здесь: http://laravel.com/docs/5.1/eloquent-relationships
Других решений пока нет …