Как получить текущую модель из пользовательского метода в laravel

Я не уверен, что правильно задаю вопросы, но это то, что я пытаюсь сделать.

Таким образом, мы можем получить ток от

$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 информация, как идентификатор?

Извините, если это немного сбивает с толку.

6

Решение

Прежде всего, если вы хотите получить доступ к связанному объекту, вы делаете это, обращаясь к атрибуту с тем же именем, что и отношение. В вашем случае, чтобы получить доступ к объекту (ам) из отношения, вам нужно сделать это:

$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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]