У вас есть несколько вариантов:
1) Вы можете использовать Ресурсы API . Это мой предпочтительный подход.
2) Если API Resources не ваша чашка чая, вам просто нужно как-то загрузить отношения. Один из способов сделать это - $standard->load('stream')
. Другой способ - просто получить доступ к отношению: $standard->stream
.
То, что здесь происходит, заключается в том, что любые доступные отношения превращают его в ключ модели relations
, что делает сериализацию json по умолчанию немного непредсказуемой. В связи с этим я предпочитаю быть явным с ресурсами API.
3) Вы можете изменить массив $with
модели Standard
, включив в него stream
, но я не фанат этого подхода, поскольку это означает, что каждый раз, когда Standard
записи извлекаются, они будут автоматически извлекаться отношение stream
.
with()
- это метод, который вы вызываете для объекта Eloquent Builder, который извлекает отношения для Eager Загрузка . В этом случае вы работаете с экземпляром Model
, а не с Eloquent Builder.
Это является первоначальным предложением добавить это ключевое слово. Как уже указывалось, это особенность C99 ; это не имеет ничего общего с C ++.
Поскольку в заголовочных файлах некоторых библиотек C используется ключевое слово, языку C ++ придется что-то с этим делать… как минимум, игнорируя ключевое слово, поэтому нам не нужно #define ключевое слово в пустой макрос, чтобы подавить ключевое слово.
В своей статье Оптимизация памяти Кристер Эриксон говорит, что хотя ограничение
еще не является частью стандарта C++, что оно поддерживается многими компиляторами, и он рекомендует использовать его, когда оно доступно:
Ограничение по ключевому слову
! Новинка в стандарте ANSI/ISO C 1999
! Пока еще не в стандарте C++, но поддерживается многими компиляторами C++
! Только подсказка, так что может ничего не делать и при этом соответствовать
Ограниченному указателю (или ссылке)....
! ...это, по сути, обещать компилятору, что для область действия указателя, цель указателя будет только быть доступным через этот указатель (а указатели скопированные из него).
В компиляторах C++, поддерживающих его, вероятно, он должен вести себя так же, как и в C.
См. подробности в этом посте SO: Реалистичное использование ключевого слова 'limit' в C99?
Потребовалось полчаса, чтобы пролистать статью Эриксона, это интересно и стоит того.
Редактирование
Я также обнаружил, что C/C++ компилятор IBM AIX поддерживает ключевое слово __restrict__
.
g++ также, похоже, поддерживает это, так как следующая программа чисто компилируется на g++:
#include <stdio.h>
int foo(int * __restrict__ a, int * __restrict__ b) {
return *a + *b;
}
int main(void) {
int a = 1, b = 1, c;
c = foo(&a, &b);
printf("c == %d\n", c);
return 0;
}
Я также нашел хорошую статью об использовании limit
:
Demystifying The Restrict Keyword
Edit2
Я наткнулся на статью, в которой специально обсуждается использование ограничений в программах на Си++:
Load-hit-stores и ключевое слово __restrict
Также, Microsoft Visual C++ поддерживает ключевое слово __restrict
.
В языке Си++ такого ключевого слова нет. Список ключевых слов языка Си++ можно найти в разделе 2.11/1 стандарта языка Си++. restriction
- ключевое слово в C99 версии языка Си, а не в C++.