Laravel Eloquent and Trimming fields for use in relationships
Asked Answered
S

1

8

So I've got a couple of models which I'm setting up for use with Laravels Eloquent ORM...

The tables these models refer to are populated by a third party program, which I do not have much ability to edit, so the following annoyance I have to find a work-around for.

The users tables have string IDs, example: 1234

Some other tables (action logs for example) have a string foreign user ids, example: "1234"

As you can probably see here, the other tables add a " onto the user IDs, and as such, I can't run it straight through a laravel relationship, as "1234" ~= 1234...

So I'm trying to find out if there is some way I can run the "1234" through a trim function or similar to remove the "s before it gets used in the eloquent relationship.

And yes, I know it's silly to add ", as mentioned, it's a third party program. I'm going to try to see if they can change that functionality, but in the case they cannot, I need to find a way to work around it.

Any help would be appreciated :)

Example of the relationship code:

public function useractions(){
    return $this->hasMany('\App\UserActions','userid');
}



public function user(){
    return $this->belongsTo('\App\User','userid');
}

This is a crosspost from: https://laracasts.com/discuss/channels/eloquent/eloquent-and-trimming-relation-fields

Syphilis answered 24/2, 2017 at 23:16 Comment(1)
unfortunately, I don't believe it's that simple. I've edited the post with an example snippet of code for a relationship in laravel. There is no retrieval of the id column data for the relationship, only a reference to itSyphilis
D
6

You can use Eloquent Raw expressions.

public function useractions(){
    return \App\UserActions::Where(DB::raw("TRIM(userid)"), $this->userid)->get();
}
Dint answered 19/7, 2017 at 3:16 Comment(1)
this doesn't returns a HasMany instance but a CollectionAldine

© 2022 - 2024 — McMap. All rights reserved.