За последние 24 часа нас посетили 17624 программиста и 1580 роботов. Сейчас ищут 1395 программистов ...

включить связанные ресурсы в ответ Resources

Тема в разделе "Laravel", создана пользователем Laravel_n, 25 дек 2018.

  1. Laravel_n

    Laravel_n Новичок

    С нами с:
    25 дек 2018
    Сообщения:
    1
    Симпатии:
    0
    Есть 2 таблицы:

    PHP:
    1. <?php
    2.  
    3. use Illuminate\Support\Facades\Schema;
    4. use Illuminate\Database\Schema\Blueprint;
    5. use Illuminate\Database\Migrations\Migration;
    6.  
    7. class CreateSlidestructsTable extends Migration
    8. {
    9.     /**
    10.      * Run the migrations.
    11.      *
    12.      * @return void
    13.      */
    14.     public function up()
    15.     {
    16.         Schema::create('slidestructs', function (Blueprint $table) {
    17.             $table->increments('id');
    18.             $table->unsignedInteger('number');
    19.             $table->string('title', 2000);
    20.             $table->integer('title_sign');
    21.             $table->string('category', 2000);
    22.             $table->string('slidestructs_image_url', 2000);
    23.             $table->string('slidestructs_thumb_url', 2000);
    24.             $table->integer('thumb_position')->nullable();
    25.             $table->string('type', 100);
    26.             $table->timestamps();
    27.         });
    28.     }
    29.  
    30.     /**
    31.      * Reverse the migrations.
    32.      *
    33.      * @return void
    34.      */
    35.     public function down()
    36.     {
    37.         Schema::dropIfExists('slidestructs');
    38.     }
    39.  
    40. }

    PHP:
    1. <?php
    2.  
    3. use Illuminate\Support\Facades\Schema;
    4. use Illuminate\Database\Schema\Blueprint;
    5. use Illuminate\Database\Migrations\Migration;
    6.  
    7. class CreateSlideimagesTable extends Migration
    8. {
    9.     /**
    10.      * Run the migrations.
    11.      *
    12.      * @return void
    13.      */
    14.     public function up()
    15.     {
    16.         Schema::create('slideimages', function (Blueprint $table) {
    17.             $table->increments('id');
    18.             $table->unsignedInteger('slide_id');
    19.             $table->foreign('slide_id')->on('slidestructs')->references('id');
    20.             $table->string('slideimages_image_url', 2000);
    21.             $table->timestamps();
    22.         });
    23.     }
    24.  
    25.     /**
    26.      * Reverse the migrations.
    27.      *
    28.      * @return void
    29.      */
    30.     public function down()
    31.     {
    32.         Schema::dropIfExists('slideimages');
    33.     }
    34. }
    Контроллер:

    PHP:
    1. <?php
    2.  
    3. namespace App\Http\Controllers;
    4.  
    5. use App\Http\Resources\SlideResource;
    6. use App\Slidestruct;
    7. use Illuminate\Http\Request;
    8.  
    9. class PresentationController extends Controller
    10. {
    11.     /**
    12.      * Display a listing of the resource.
    13.      *
    14.      * @return \Illuminate\Http\Response
    15.      */
    16.     public function index()
    17.     {
    18.         $Struct = Slidestruct::with('slideimage')->get();
    19.         return SlideResource::collection($Struct);
    20.     }
    И в api.php:

    PHP:
    1. Route::get('/', '\App\Http\Controllers\PresentationController@index');
    Файл slide.php:

    PHP:
    1. <?php
    2.  
    3. namespace App\Http\Resources;
    4.  
    5. use Illuminate\Http\Resources\Json\JsonResource;
    6.  
    7. class Slide extends JsonResource
    8. {
    9.     /**
    10.      * Transform the resource into an array.
    11.      *
    12.      * @param  \Illuminate\Http\Request  $request
    13.      * @return array
    14.      */
    15.     public function toArray($request)
    16.     {
    17.         //return parent::toArray($request);
    18.     }
    19. }
    Файл SlideResource.php:

    PHP:
    1. <?php
    2.  
    3. namespace App\Http\Resources;
    4.  
    5. use App\Slidestruct;
    6. use Illuminate\Http\Resources\Json\JsonResource;
    7. use Illuminate\Http\Resources\Json\ResourceCollection;
    8.  
    9. class SlideResource extends JsonResource
    10. {
    11.     /**
    12.      * Transform the resource into an array.
    13.      *
    14.      * @param  \Illuminate\Http\Request  $request
    15.      * @return array
    16.      */
    17.  
    18.     public function toArray($request)
    19.     {
    20.         return [
    21.           'id' => $this->id,
    22.           'number' => $this->number,
    23.           'title' => $this->title,
    24.           'title_sign' => $this->title_sign,
    25.           'category' => $this->category,
    26.           'slidestructs_image_url' => $this->slidestructs_image_url,
    27.           'slidestructs_image_thumb' => $this->slidestructs_image_url,
    28.           'thumb_position' => $this->thumb_position,
    29.           'type' => $this->type,
    30.           'created_at' => $this->created_at,
    31.           'updated_at' => $this->updated_at,
    32.  
    33.           'slideimages_image_url' => Slide::collection($this->slideimages_image_url),
    34.         ];
    35.     }
    36. }
    выдает ошибку: "Call to a member function first() on null",

    хочу вытащить связанные данные с помощью кода:

    PHP:
    1. 'slideimages_image_url' => Slide::collection($this->slideimages_image_url),