消息模型和用户模型

时间:2016-08-31 07:51:51

标签: php laravel

消息模型代码

<?php

namespace App;    
use Illuminate\Database\Eloquent\Model;

class Message extends Model
{
    protected $table="Message";     
}

用户模型代码

<?php

namespace App;

use Illuminate\Contracts\Auth\Authenticatable;    
use Illuminate\Database\Eloquent\Model;

class User extends Model implements Authenticatable
{
    use \Illuminate\Auth\Authenticatable;    
    protected $table="NewUser";       
}

2 个答案:

答案 0 :(得分:0)

由于您未将其包含在刀片模板中,因此不会显示该消息。工作解决方案应该是这样的:

<img src="\upload\{{$detail->image}}" height="100px" width="100px">

{{$detail->username}}

<br/>

{{$detail->email}}

<br>

@foreach($messages as $message)    
    {{$message->body}}
@endforeach

<form action="/store/{{$detail->id}}" method="post">
    {!!csrf_field()!!}
    <input type="text" name="title" class="form-control" placeholder="title" required>
    <br/>
    <textarea rows="4" cols="4" name="post" class="form-control" placeholder="post" required></textarea>
    <br/>
    <input type="submit" name="submit" class="btn btn-primary" value="submit">
</form>

当然,用DB中的消息表中的任何字段更改“body”。

修改

您转发相同的ID以获取用户及其消息。

public function getId($id)
{

    $data['detail']=User::find($id) AND  $data['messages']=Message::find($id); 

    return view('new_form',$data);
}

定义正确的模型关系后,您应该执行以下操作:

public function getId($id)
{
    $user = User::find($id)

    $data['detail']=$user AND  $data['messages']=$user->messages() 

    return view('new_form',$data);
}

您的User.php的关系应为Ketav Chotaliya建议:

public function messages()
{
    return $this->hasMany('App\Message');
}

如果你的消息模型被调用Message.php,那么它应该可以用于其他一切,相应地重写

答案 1 :(得分:0)

我没有完全理解你的观点。

如果您在JOIN中遇到问题,那么两个表就是解决方案。

如果您在模型中设置eloquent-relationships,则无需JOIN查询即可直接获取JOINED数据。

模型文件

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class <model_name> extends Model
{
    public function <function_name>()
    {
        return $this->hasMany('<namespace_of_target_model>');
    }
}

在一个查询中获取JOINED数据。

$data = DB::table('table')
            ->where('column', <condition>)
            ->get();

如果你没有设置模型之间的关系,那么你必须手动加入两个表。

控制器文件

$data = DB::table('<table_1>')
        ->leftJoin('<table2>', '<table_1.key>', '<condition>', '<table_2.key>')
        ->get();

以下是Laravel 5.3中不同类型JOIN的Example