За последние 24 часа нас посетили 18766 программистов и 1605 роботов. Сейчас ищут 606 программистов ...

Подключить модель в цыкле

Тема в разделе "Laravel", создана пользователем vah-smile, 6 мар 2021.

  1. vah-smile

    vah-smile Активный пользователь

    С нами с:
    13 апр 2009
    Сообщения:
    162
    Симпатии:
    1
    Адрес:
    Украина, Ровно
    Добрый день.
    Как в цыкле можно подключить модель? А именно хочу написать что-то подобное:
    PHP:
    1. foreach($tables as $row) {
    2.     $data['table'][$row->id] = '\App\Models\\'.$row->model::all();
    3. }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    какую модель ? Изначально в массив записываешь строку. В смысле строку подключить ?
    • По составному результату, хочу использовать строку в качестве имени класса и инициализировать объект
    PHP:
    1. <?php
    2.  
    3. class foo
    4. {
    5.    
    6. }
    7.  
    8. $name = 'foo';
    9.  
    10. $a = new $name;
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.579
    Симпатии:
    1.760
    PHP:
    1. call_user_func(["App\\Models\\$row->model", "all"]);
    Но вообще такого надо избегать.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    @mkramer, есть вероятность что $row->model - это возвращаемый объект, в котором дергается статический метод all для получения "чего-то" строкового значения. В таком случае, в твоем примере - Fatal error
     
  5. vah-smile

    vah-smile Активный пользователь

    С нами с:
    13 апр 2009
    Сообщения:
    162
    Симпатии:
    1
    Адрес:
    Украина, Ровно
    Я сделал следующим образом:
    PHP:
    1. foreach($tables as $row) {
    2.     $data['table'][$row->id] = DB::table($row->table)->get();
    3. }
    как бы сейчас работает, но хотелось бы реализовать это не через DB, а через Models
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.579
    Симпатии:
    1.760
    Ну я показал как. А что за задачу пытаешься решить таким странным образом?
     
  7. vah-smile

    vah-smile Активный пользователь

    С нами с:
    13 апр 2009
    Сообщения:
    162
    Симпатии:
    1
    Адрес:
    Украина, Ровно
    В БД есть таблица tables:
    Код (Text):
    1. |  ID  |  Table_name  | Model  | question_id |
    вот теперь, на странице (/question/question_id) - я хочу вывести содержимое только тех таблиц, что принадлежат этому вопросу ( https://prnt.sc/10gs59u ).
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.105
    Симпатии:
    1.243
    Адрес:
    там-сям
    Ну надо тебе вывести данные, связанные с вопросом. Они в нескольких таблицах. Это хорошо :)
    Зачем тебе цикл по таблицам? ))) Обращайся к моделям явно или соедини данные в SQL запросе / запросе Query Builder.

    Такое чуйство, что ты пытаешся дословно скопировать нечто из мира VB и Excel.