试图在Laravel中使用外键从数据库中拉出多行

问题描述 投票:0回答:1

我正在尝试从数据库表multi_image中提取多个图像并显示它们,这些数据库表具有链接到表posts中一行的外键

posts表中的每一行都链接到一个用户,但一个用户可以有很多帖子1:M关系

post中的每一行可以有多张图片(最多4张图片,但是一张图片只能再次属于一个帖子1:M)>

PostsController.php

<?php

namespace App\Http\Controllers;
use App\Multi_image;
use App\Post;

use App\User;
use DB;
use Illuminate\Http\Request;
use Intervention\Image\Facades\Image;
use function Sodium\compare;

class PostsController extends Controller
{
public function __construct()
{
    $this->middleware('auth');
}

public function index()
{
    $users = auth()->user()->following()->pluck('profiles.user_id');

    $posts = Post::whereIn('user_id', $users)->with('user')->latest()->paginate(5);

    $mImage = Multi_image::whereIn('post_id', $posts);

//        $mImage = Post::with('multi_image')->get();
    return view('posts.index', compact('posts','mImage'));
}

Post.php

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $guarded = [];

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function images()
    {
        return $this->hasMany(Multi_image::class);
    }
}

Multi_image.php

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Multi_image extends Model
{
    protected $table = "multi_image";

    public function post()
    {
        return $this->belongsTo('App\Post', 'post_id');
    }
}

women.blade.php

 @foreach($posts as $post)
            @if($post->gender == 'women')
                {{--                    <div class="row">--}}
                <div class="col-lg-4 col-md-6 col-sm-12 pt-5">
                    <div class="pb-1">
                            <span class="font-weight-bold">
                                <a href="/profile/{{ $post->user->id }}">
                                    <img src="{{ $post->user->profile->profileImage() }}" class="rounded-circle w-100" style="max-width: 40px;">
                                    <span class="text-dark">{{ $post->user->username }}</span>
                                </a>
                            </span>
                    </div>
                    <a href="/p/{{ $post->id }}">
                        @foreach($mImage as $image)
                            <img src="{{ public_path($image->multi_image->image) }}" class="w-100">
                        @endforeach
                            .
                            .
                            .

帖子

posts table

multi_image

multi_image table

错误抛出:

未定义的变量:mImage(视图:C:.. \ resources \ views \ posts \ women.blade.php)

我正在尝试从数据库表multi_image中提取多张图像并显示它们,这些数据库的外键链接到表帖子中的一行,posts表中的每一行都链接到一个用户,但一个...]]

php laravel eloquent phpmyadmin
1个回答
0
投票

未定义,因为您尚未在任何地方定义它。尝试在foreach中使用App\Multi_image::all() as $image

此外,您的模型类似乎使用了错误的名称。您应该将它们称为MultiImage等-单数形式,而DB中的表以复数形式-multi_images

© www.soinside.com 2019 - 2024. All rights reserved.