Проблемы с красноречивым отношением - PullRequest
0 голосов
/ 03 февраля 2020

В настоящее время у меня возникает следующая проблема:

$eloquentEntity->relation->count()

и

$eloquentEntity->relation()->count()

иногда возвращают два разных значения (первое иногда равно нулю). Странно то, что только иногда значения различаются, хотя все $ eloquentEntity извлекаются навалом.

$eloquentEntity выбирается из базы данных с использованием

$eloquentEntities = EloquentEntity::with(['relation'])->get()

, поэтому все, что содержится в этом отношение должно быть доступно, когда count() запущен в коллекции отношений.

Кто-нибудь имеет представление о том, что я делаю неправильно?

Ответы [ 4 ]

2 голосов
/ 03 февраля 2020

Вы можете рассчитать сумму отношения, используя метод withCount(). Примерно так

$eloquentEntities = EloquentEntity::withCount('relation')->get();
foreach ($eloquentEntities as $row) {
    echo $row->relation_count; // to print relation count
}

Вы также можете просмотреть документы для получения дополнительной информации

0 голосов
/ 03 февраля 2020

Я только что нашел решение: мы используем UUID в качестве первичных ключей, и мы забыли установить public $keyType = 'string'; в наших моделях. По умолчанию они интерпретировали ключи как целые числа, которые по какой-то причине большую часть времени работают с UUID.

0 голосов
/ 03 февраля 2020

если подсчитать отношение сущностей, попробуйте такой код

$posts = App\Post::withCount('comments')->get();
foreach ($posts as $post) {
 echo $post->comments_count;
}

document

0 голосов
/ 03 февраля 2020

Вы можете использовать атрибут count, например:

  public function getReferalUsersAttribute()
    {
        return $this->hasMany('App\User', 'referal_id' , 'id')->count();

    }

и добавить атрибут, подобный этому, в вашей модели

protected $appends = [
        'referal_users'
    ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...