Как увидеть поля таблицы из внешних ключей в Laravel

Я не понимаю, как C # callle может выделить память, где C ++ вызываемый не смог?

Вы ищете неправильную проблему , Проблема не в том, «как C # может выделить память». Любой может выделить память ... И слишком много способов :-) Проблема всегда «как вы освободите память?», Потому что освобождение памяти так же важно, как выделение памяти (не освобождение памяти приведет к памяти утечки, которые сделают ваше занятие памятью программы пройденным шаром, а освобождение его с помощью неправильного распределителя не освободит его как минимум (см. предыдущую точку) и в худшем случае приведет к сбою программы ).

Теперь ОС (например, Windows) дает вам некоторые распределители (например, CoTaskMemAlloc), которые может использовать любой пользователь, но проблема в том, что обычно в C / C ++ вы используете, Используйте malloc / new. И проблема здесь: эти распределители могут быть «разными» (отдельными) между двумя dll: две библиотеки dll, скомпилированные в C / C ++ (но, например, с разными версиями Visual C ++ или в режиме отладки vs release или один с использованием среды выполнения как dll, а другая, связанная непосредственно с исполняемой средой или скомпилированная с разными компиляторами C), будет иметь различные malloc (и различные new в C ++). Имея различные malloc / new, они будут иметь free / delete, так что free одной dll не может освободить память другой dll.

Теперь ... Используя эту подпись:

void MyCPPDllFunction(char *out, int maxOutSize);

вызывающий должен выделить память ... Таким образом, вызывающий пользователь знает, как освободить память ... Нет утечки памяти: -)

С помощью этой сигнатуры:

char *MyCPPDllFunction();

вызываемому приходится выделять память ... А теперь как может вызывающий ее освободить? Вызов может экспортировать другой метод:

void FreeMemoryAllocatedByMe(void *ptr)
{
    free(ptr);
}

, после чего вызывающий абонент вызовет его, и все будет решено, потому что free будет вызываемым free.

Теперь ... В общем случае, когда объекты (и строки) C # -маршалов, он использует CoTaskMemAlloc для выделения памяти, и ожидает, что если он получит память, он должен освободить ее с помощью CoTaskMemFree , Итак, в примере C ++ -> C # C ++ должен

CoTaskMemFree(output);
0
задан Abdul Rehman 6 April 2019 в 22:08
поделиться

1 ответ

Это довольно легко сделать именно то, что вы хотите. Ларавел отлично умеет создавать отношения.

Вам нужно будет настроить модель класса как отношение к вашей пользовательской модели. См. документы о том, как это сделать

. Затем, когда вы извлекаете пользователей из базы данных в контроллере, вы можете напрямую включить отношения:

$users= \App\User::with('class')->get();

Теперь у вас есть соответствующая модель класса в вашей коллекции для каждого из ваших пользователей, вы можете перетащить имя напрямую, как вам угодно в представлении блэйда:

@foreach($users as $user)
   {{$user->class->name}}
@endforeach

Я предлагаю сначала протестировать этот простой дамп, как это будет работать. Затем вы можете попробовать присоединить различные модели, например, категории.

НТН

0
ответ дан Watercayman 6 April 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: